POJ-1111 Image Perimeters 简单搜索

来源:互联网 发布:君辉锁芯 淘宝 编辑:程序博客网 时间:2024/05/17 01:46

题目链接



#include<stdio.h>#include<iostream>#include<string>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<queue>using namespace std;const int maxn = 35;const int inf = 1<<30;int n,m,ans;char map[maxn][maxn];int xs[] = {0,1,0,-1,1,1,-1,-1};int ys[] = {1,0,-1,0,1,-1,1,-1};void DFS( int x,int y ){int xx,yy;for( int i = 0; i < 4; i ++ ){xx = x + xs[i];yy = y + ys[i];if( map[xx][yy] == '.' ){//map[xx][yy] = '*';ans ++;}else if( map[xx][yy] == 'X' ){map[xx][yy] = '*';DFS(xx,yy);}}for( int i = 4; i < 8; i ++ ){xx = x + xs[i];yy = y + ys[i];if( map[xx][yy] == 'X' ){map[xx][yy] = '*';DFS(xx,yy);}}}int main(){    //freopen("data.txt","r",stdin);   int sx,sy;while( scanf("%d%d%d%d",&n,&m,&sx,&sy) == 4 ,(n||m||sx||sy)){ans = 0;memset(map,'.',sizeof(map));for( int i = 1; i <= n; i ++ ){getchar();for( int j = 1; j <= m; j ++ )scanf("%c",&map[i][j]);}map[sx][sy] = '*';DFS(sx,sy);printf("%d\n",ans);}    return 0;}


0 0
原创粉丝点击