poj1312 dfs 深度优先搜索

来源:互联网 发布:江汉大学网络支付系统 编辑:程序博客网 时间:2024/06/08 13:18

对于迷宫型的题目

如果能在四周围上围墙

将能节省很多代码


附上自己的代码:

#include <iostream>using namespace std;int map[30][30];bool used[30][30];int w,h,a,b;int k;void dfs(int x,int y){if(used[x][y]||!map[x][y])return ;used[x][y]=1;k++;dfs(x-1,y);   //这里本来应该有四个判断语句的。但是当在四周围上围墙后,简洁了很多。dfs(x,y+1);dfs(x+1,y);dfs(x,y-1);}int main(){    while(cin>>w>>h&&w&&h){    memset(map,0,sizeof(map));memset(used,0,sizeof(used));for(int i=1;i<=h;i++)for(int j=1;j<=w;j++){    char ch;cin>>ch;if(ch=='.')map[i][j]=1;else if(ch=='@')a=i,b=j,map[i][j]=1;}k=0;dfs(a,b);cout<<k<<"\n";}return 0;}


0 0