我的程序为何总是死循环?大佬帮看看。

P1683 入门

建议字符输入用 %s 或者cin
by Papaya @ 2018-11-04 17:30:35


@[我是一头猪啊](/space/show?uid=73355) 谢谢大佬 但还是死
by somethingfornothing @ 2018-11-04 17:43:32


@[Mr_chen](/space/show?uid=70723) 搜过的节点就不要搜了。。。不然可以一直在两个点打转
by Papaya @ 2018-11-04 17:44:59


@[我是一头猪啊](/space/show?uid=73355) 谢谢大佬
by somethingfornothing @ 2018-11-04 21:45:15


改了后全WA了 ``` #include<cstdio> #include<iostream> using namespace std; char a[21][21]; int w,h; bool used[21][21]; int ans,sum; void dfs(int x,int y) { if(x<1||x>h||y<1||y>w||a[x][y]=='#') { if(ans<sum)ans=sum; return; } if(used[x][y]==0) { used[x][y]=1; dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1); sum++; } } int main() { int x,y; scanf("%d%d",&w,&h); for(int i=1;i<=w;i++) { for(int j=1;j<=h;j++) { scanf("%c",&a[i][j]); if(a[i][j]=='@') { x=i; y=i; sum++; } } } dfs(x,y); cout<<ans; } ```
by somethingfornothing @ 2018-11-04 22:11:40


|