社区讨论
各位大哥请帮俺看看黛马怎么了
P1644跳马问题参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhjh65rp
- 此快照首次捕获于
- 2025/11/04 02:30 4 个月前
- 此快照最后确认于
- 2025/11/04 02:30 4 个月前
CPP
#include <iostream>
using namespace std;
int x[8] = {1, 1, -1, -1, 2, 2, -2, -2},
y[8] = {2, -2, 2, -2, 1, -1, 1, -1}; //移动方式
int a[101][101]; //棋盘
unsigned long long total = 0;
bool b[101][101] = {0}; //判断是否走过
int m, n; //终点坐标
void search(int p, int q); //搜索函数
int main()
{
cin >> m >> n;
b[0][0] = 1;
search(0, 0); //马自左下角 (0,0) 向右上角 (m,n) 跳
cout << total << endl;
return 0;
}
void search(int p, int q)
{
for (int i = 0; i < 8; i++)
{
int xx = p + x[i];
int yy = q + y[i];
if (!b[xx][yy] && xx >= 0 && xx <= m && yy >= 0 && yy <= n)
{
b[xx][yy] = 1;
if (xx == m && yy == n)
{
total++; //总方案数 +1;
}
else
search(xx, yy); //接着继续搜
b[xx][yy] = 0; //回溯
}
}
}
谢谢你能读完黛马
回复
共 4 条回复,欢迎继续交流。
正在加载回复...