Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <fstream>
- #include <iostream>
- #include <vector>
- using namespace std;
- std::vector<pair<int, int>> steps {
- {-2, 1},
- {-1, 2},
- {1, 2},
- {2, 1},
- {2, -1},
- {1, -2},
- {-1, -2},
- {-2, -1}
- };
- bool pos[6][6];
- int n, m;
- int answer;
- void dfs(int i1, int j1, int cur_len)
- {
- pos[i1][j1] = true;
- for (auto p : steps)
- {
- int i = p.first, j = p.second;
- int ii = i + i1;
- int jj = j + j1;
- if (ii == 0 && jj == 0 && cur_len + 1 == n * m)
- {
- answer += 1;
- return;
- }
- if (ii >= 0 && ii < n && jj >= 0 && jj < m &&
- pos[ii][jj] == false)
- {
- dfs(ii, jj, cur_len + 1);
- pos[ii][jj] = false;
- }
- }
- }
- int main()
- {
- std::ifstream fin("input.txt");
- std::ofstream fout("output.txt");
- fin >> n >> m;
- if (n == m && n == 1)
- {
- fout << 1;
- return 0;
- }
- pos[0][0] = true;
- dfs(0, 0, 0);
- fout << answer;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement