【正经题解】马走日
2024-02-21 17:32:05
发布于:台湾
57阅读
0回复
0点赞
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_N = 15;
int visited[MAX_N][MAX_N];
int directions[8][2] = {{1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1}, {-2, 1}, {-1, 2}};
int pathCount;
// 深度优先搜索函数
void dfs(int x, int y, int steps, int n, int m) {
int nextX, nextY, k;
// 如果已经走完整个棋盘,增加路径计数
if (steps == n * m) {
pathCount++;
}
// 如果当前位置未被访问
if (visited[x][y] == 0) {
visited[x][y] = 1; // 标记为已访问
// 尝试八个方向的移动
for (k = 0; k < 8; k++) {
nextX = x + directions[k][0];
nextY = y + directions[k][1];
// 检查下一步是否在合法范围内且未被访问过
if (nextX >= 0 && nextX < n && nextY >= 0 && nextY < m && visited[nextX][nextY] == 0) {
dfs(nextX, nextY, steps + 1, n, m);
}
}
visited[x][y] = 0; // 回溯,标记为未访问
}
}
int main() {
int t;
cin >> t;
while (t--) {
int n, m, startX, startY;
cin >> n >> m >> startX >> startY;
pathCount = 0;
memset(visited, 0, sizeof(visited)); // 初始化访问数组
dfs(startX, startY, 1, n, m);
cout << pathCount << endl;
}
return 0;
}
全部评论 1
https://www.acgo.cn/team/1954136972457275392(求求加,这个团有400多人,真的不容易被团贩子删了好多呢...还可以给你们一些基础权限:比如10~50人团队,还可以承包TPOW、TPOJ竞赛,拥有丰富的题库,优秀的大佬都在团队之中,还有14个附属团,拥有比较强大的积分系统,还有竞赛审核、积分统计等职位等着你,还有一些精美或者很猎奇的图片,还有队长精心布置的小说,也有比较完善的作业和奖品,特别是出比赛,还能收货很多的礼品哦,这个团队还在洛谷、绍兴一中网站、cppreference、CSND博客中都有较为广泛的分布,所有团队总数到达了21个团队,可以随进随退,也不会强求你们的哦,所以,你们愿意加团吗?真的,求求啦,我也可以给你们拉人,我将会非常真心的对待每一个优秀的ACGO青年的!!!!!!!!ACGO万岁!!!)
6天前 来自 浙江
0







有帮助,赞一个