@[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