通过代码:
#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;
}
转载请注明原文地址:https://blackberry.8miu.com/read-31205.html