HDU1312 dfs

来源:互联网 发布:mac安装jdk后如何配置 编辑:程序博客网 时间:2024/06/16 06:02

本来以为还要回溯.不需要只要一直搜索下去就行了

#include<stdio.h>#include<stdlib.h>#include<string.h>int maps[101][101];int status[101][101];int x,y,total;int n,k;void dfs(int i,int h){if(i>1&&!maps[i-1][h]&&!status[i-1][h]){status[i-1][h]=1;total += 1;dfs(i-1,h);}if(i<k&&!maps[i+1][h]&&!status[i+1][h]){status[i+1][h]=1;total += 1;dfs(i+1,h);}if(h>1&&!maps[i][h-1]&&!status[i][h-1]){status[i][h-1]=1;total += 1;dfs(i,h-1);}if(h<n&&!maps[i][h+1]&&!status[i][h+1]){status[i][h+1]=1;total += 1;dfs(i,h+1);}}int main(){int i,j;char ch;while(scanf("%d%d",&n,&k)&&(n||k)){scanf("\n");for(i=1;i<=k;i++){for(j=1;j<=n;j++){scanf("%c",&ch);if(ch=='.')maps[i][j]=0;else if(ch=='#')maps[i][j]=1;else if(ch=='@'){maps[i][j]=0;x=i,y=j;}}if(i!=k)scanf("\n");}memset(status,0,sizeof(status));total=1;status[x][y]=1;dfs(x,y);printf("%d\n",total);}return 0;}



原创粉丝点击