本文主要是介绍POJ-1111 Image Perimeters 简单搜索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
#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;
}
这篇关于POJ-1111 Image Perimeters 简单搜索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!