社区讨论

各位大哥请帮俺看看黛马怎么了

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;      //回溯
        }
    }
}
谢谢你能读完黛马 GoodbyeGoodbye

回复

4 条回复,欢迎继续交流。

正在加载回复...