HDU1312深搜

来源:互联网 发布:linux wc grep 编辑:程序博客网 时间:2024/06/06 20:59

题目大意:有h*w格子,从起点开始,求崔铎能到达几个黑格,红格不可走

分析:搜索入门题,注意边界,记录访问过程   

#include<stdio.h>#define MAX 25int d[4][2]={0,1,1,0,0,-1,-1,0};int ma[MAX][MAX],h,w,an;void dfs(int sh,int sw){    int i;    if(sh<0||sw<0||sh==h||sw==w)        return ;    if(ma[sh][sw]==1)        return ;    if(ma[sh][sw]==0){        ma[sh][sw]=1;        an++;    }    for(i=0;i<4;i++)        dfs(sh+d[i][0],sw+d[i][1]);}int main(){//    freopen("in.txt","r",stdin);    int i,j,sth,stw;char ch;    while(scanf("%d%d",&w,&h)&&w){        an=0;        for(i=0;i<h;i++){            getchar();            for(j=0;j<w;j++){                scanf("%c",&ch);                if(ch=='.') ma[i][j]=0;                else if(ch=='@'){                    ma[i][j]=0;                    sth=i;                    stw=j;                }                else ma[i][j]=1;            }        }        dfs(sth,stw);        printf("%d\n",an);    }    return 0;}


0 0
原创粉丝点击