大家帮我看看我这深搜的方法有没有错误

揽星辰. 2021-02-23 11:22:23
#include <stdio.h>
int a[21][21]={0},count=0,m,n;
int main()
{
int x,y;
void search(int x,int y);
scanf("%d%d%d%d",&m,&n,&x,&y);
a[x][y]=1;
a[x-1][x-2]=1; //将不能经过的点的值设为1
a[x-1][x+2]=1;
a[x-2][x+1]=1;
a[x-2][x-1]=1;
a[x+1][x+2]=1;
a[x+1][x-2]=1;
a[x+2][x+1]=1;
a[x+2][x-1]=1;
search(0,0);
printf("%d\n",count); //输出从(0,0)点到达(m,n)点的路数
}
void search(int x,int y)
{
if(x>m||y>n) return ; //如果x>m或者y>n结束搜索
if(x==m&&y==n) {count++;return ;} //如果到达(m,n)这点的话次数加1
if(a[x][y+1]!=1) search(x,y+1); //如果右方可以走的话向右搜索
if(a[x+1][y]!=1) search(x+1,y); //如果下方可以走的话向下搜索
}



我感觉方法应该是没错的,每次向右向下就好了,为什么和答案对不上
...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
揽星辰. 2021-02-24
  • 打赏
  • 举报
回复
题目是小于20,我用21不会越界的
自信男孩 2021-02-24
  • 打赏
  • 举报
回复
引用 2 楼 m0_55067373 的回复:
找到问题了,是障碍物的设定有问题,下标应该不会越界,因为我只往右和往下搜索,而且超过这个范围就会return

问题是x,y输入不能保证不大于21
揽星辰. 2021-02-23
  • 打赏
  • 举报
回复
找到问题了,是障碍物的设定有问题,下标应该不会越界,因为我只往右和往下搜索,而且超过这个范围就会return
forever74 2021-02-23
  • 打赏
  • 举报
回复
下标有机会越界; 你输入的y用得有点少。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧