《搜索》hdoj 1312 dfs模版

#include<stdio.h>
#include<string.h>
int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int ans,n,m,si,sj; char map[22][22]; void dfs(int sx,int sy) { if(sx>=m||sy>=n||sx<0||sy<0) return; int i,tx,ty;
    ans++; for(i=0;i<4;i++) {
        tx=sx+move[i][0];
        ty=sy+move[i][1]; if(map[tx][ty]=='.') {
            map[tx][ty]='#';
            dfs(tx,ty); } } } int main() { int i,j; while(~scanf("%d%d",&n,&m)&&n+m) {
        getchar(); for(i=0;i<m;i++) { for(j=0;j<n;j++) {
                scanf("%c",&map[i][j]); if(map[i][j]=='@') {
                    si=i;
                    sj=j; } }
            getchar(); }
        ans=0;
        map[si][sj]='#';
        dfs(si,sj);
        printf("%d\n",ans); } return 0; }

你可能感兴趣的:(《搜索》hdoj 1312 dfs模版)