通过代码:
#include <bits/stdc++.h> using namespace std; int n, m, x, y, sum; bool avl[10][10]; const int dx[] = { -1, -2, -2, -1, 1, 2, 2, 1 }; const int dy[] = { -2, -1, 1, 2, -2, -1, 1, 2 }; void dfs(int rx, int ry, int k) { if(k == m * n) { sum ++; return; } for(int i = 0; i < 8; i ++) { int nx = rx + dx[i]; int ny = ry + dy[i]; if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && avl[nx][ny]) { avl[nx][ny] = false; dfs(nx, ny, k + 1); avl[nx][ny] = true; } } } int main() { int t; scanf("%d", &t); while(t --) { sum = 0; memset(avl, true, sizeof(avl)); scanf("%d%d%d%d", &n, &m, &x, &y); x ++, y ++; avl[x][y] = false; dfs(x, y, 1); printf("%d\n", sum); } return 0; }
1219:马走日
最新推荐文章于 2023-02-23 08:56:57 发布