Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. int main() {
  2. queue< vector<vector<int>>> q;
  3. map<vector<vector<int>>, int> mp;
  4. int was[n][n];
  5. int px, py;
  6. int dx[4] = { -1, 0, 1, 0 }, dy[4] = { 0, -1, 0, 1 };
  7.  
  8. vector<vector<int> > t = { {2, 1, 3}, {4, 6, 5}, {7, 8, 0} };
  9. vector<vector<int> > otvet = { {1, 2, 3}, {4, 5, 6}, {7, 8, 0} };
  10. q.push(t);
  11. mp[t] = 1;
  12.  
  13. while (!q.empty()) {
  14. auto k = q.front();
  15. int pos = mp[k];
  16. if (k == otvet) {
  17. cout << pos;
  18. getchar();
  19. return 0;
  20. getchar();
  21. }
  22. q.pop();
  23. for (int i = 0; i < 3; i++) {
  24. for (int j = 0; j < 3; j++) {
  25. if (k[i][j] == 0) {
  26. px = i;
  27. py = j;
  28. }
  29. }
  30. }
  31. for (int d = 0; d < 4; d++) {
  32. if (((px + dx[d]) < 3) && ((px + dx[d]) >= 0) && ((py + dy[d]) < 3) && ((py + dy[d]) >= 0)) {
  33.  
  34. int l = k[px][py];
  35. k[px][py] = k[px + dx[d]][py + dy[d]];
  36. k[px + dx[d]][py + dy[d]] = l;
  37.  
  38.  
  39. if (!mp[k]) {
  40. mp[k] = pos + 1;
  41. q.push(k);
  42. }
  43.  
  44.  
  45. }
  46. }
  47.  
  48.  
  49.  
  50. }
  51.  
  52. getchar();
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement