求助!

P1644 跳马问题

@[liubingrui](/user/669330) 你这。。。区别还是有点大
by Max6700 @ 2023-08-27 20:36:39


@[liubingrui](/user/669330) ~~homo投降[恼]~~ 地图不一定是18啊,小于18也有可能会越界
by Max6700 @ 2023-08-27 20:37:31


@[liubingrui](/user/669330) ```if(nx>=0&& nx<=18 &&ny>=0&&ny<=18)``` 有问题
by Max6700 @ 2023-08-27 20:37:50


建议将最大边界改成$n$ 和$m$
by Max6700 @ 2023-08-27 20:39:15


@[liubingrui](/user/669330) 建议如下 O v O : 1. 删除无关变量 2. 判断不越界的条件改为 nx>=0&&nx<=n&&ny>=0&&ny<=m 3. 将越界条件放到搜索函数开头,若 x 或 y 越界,直接返回 4. 将 dx 数组的值和 dy 数组的值互换(你俩数组的值赋反了 O - O)
by wunaidedanjuan @ 2023-08-27 20:41:46


@[liubingrui](/user/669330) 你的代码我还在调,待会发。如果代码还有问题我会补充建议
by wunaidedanjuan @ 2023-08-27 20:42:51


@[liubingrui](/user/669330) 代码以调 ```c #include <bits/stdc++.h> using namespace std; int total=0,a[101][101]={0},n,m,d[101]={0},c[101]={0},s=0; int dy[8]={1,2,1,2}; int dx[8]={2,1,-2,-1}; bool b[101]={0}; void search(int,int); bool pd(int,int); int main() { cin>>n>>m; search(0,0); cout<<s; } void search(int x,int y) { if(x==n && y==m) { s++; return; } for(int j=0;j<4;j++) { int nx=x+dx[j],ny=y+dy[j]; if(nx>=0&& nx<=n &&ny>=0&&ny<=m) { search(nx,ny); } } return; } ```
by wunaidedanjuan @ 2023-08-27 20:44:45


@[wunaidedanjuan](/user/951032) @[Max6700](/user/935012) 谢谢AC了
by liubingrui @ 2023-08-27 20:47:14


@[liubingrui](/user/669330) 建议补充:\ 5. 删除 if(x>=n) return;
by wunaidedanjuan @ 2023-08-27 20:47:57


@[wunaidedanjuan](/user/951032) 谢谢提示已经删了
by liubingrui @ 2023-08-27 20:49:26


| 下一页