POJ 1111 Image Perimeters(dfs)
来源:互联网 发布:android涂鸦源码 编辑:程序博客网 时间:2024/05/20 03:42
Description
先输入一个矩阵,再输入一个X的位置,然后输出与这个X在八个方向能够连起来的所有X组成的图形的周长
Input
多组用例。每组用例的第一行为四个整数row,col,x,y(所有数据均在1-20范围内),分别表示矩阵的行数,列数,查询点的横坐标和纵坐标,接下来为一个由‘.’和‘X’组成的矩阵,以0 0 0 0结束输入
Output
对于每组用例,输出查询点在八个方向上能够连起来的所有X组成的图形的周长
Sample Input
2 2 2 2
XX
XX
6 4 2 3
.XXX
.XXX
.XXX
…X
..X.
X…
5 6 1 3
.XXXX.
X….X
..XX.X
.X…X
..XXX.
7 7 2 6
XXXXXXX
XX…XX
X..X..X
X..X…
X..X..X
X…..X
XXXXXXX
7 7 4 4
XXXXXXX
XX…XX
X..X..X
X..X…
X..X..X
X…..X
XXXXXXX
0 0 0 0
Sample Output
8
18
40
48
8
Solution
光棍节之题……
简单dfs,从查询点开始往八个方向搜索,不是‘X’就标记成‘#’,这样的话当搜索到‘X’时只需计算这个‘X’上下左右四个方向的‘.’的个数叠加即为周长
Code
#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define INF 0x3f3f3f3f#define maxn 30char map[maxn][maxn];int row,col,r,c;int d[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};int dfs(int r,int c){ if(map[r][c]=='.'||map[r][c]=='#')//不是X,返回0 return 0; map[r][c]='#';//不是X就标记成# int sum=0; for(int i=0;i<4;i++)//四个方向计算'.'的个数 sum+=(map[r+d[i][0]][c+d[i][1]]=='.'); for(int i=0;i<8;i++)//八个方向搜索 sum+=dfs(r+d[i][0],c+d[i][1]); return sum;//返回sum值 }int main(){ while(scanf("%d%d%d%d",&row,&col,&r,&c),row) { memset(map,'.',sizeof(map));//初始化 for(int i=1;i<=row;i++) for(int j=1;j<=col;j++) cin>>map[i][j]; printf("%d\n",dfs(r,c)); } return 0;}
0 0
- POJ 1111 Image Perimeters (DFS)
- poj 1111(Image Perimeters DFS)
- POJ 1111 Image Perimeters(dfs)
- DFS (poj 1111) Image Perimeters
- POJ 1111 Image Perimeters(DFS)
- poj 1111 Image Perimeters DFS
- poj 1111 Image Perimeters(dfs)
- zoj 1047 || poj 1111 Image Perimeters(DFS water~)
- POJ 1111 Image Perimeters 简单DFS
- poj 1111||zoj 1047 Image Perimeters(dfs)
- POJ 1111 Image Perimeters (裸DFS)
- POJ 1111 Image Perimeters
- poj 1111 Image Perimeters
- POJ 1111 Image Perimeters
- Poj 1111 Image Perimeters
- POJ 1111 - Image Perimeters
- poj 1111 Image Perimeters
- POJ-1111-Image Perimeters
- 最小生成树
- Hadoop集群(第4期)_SecureCRT使用
- IO流学习二
- 【BUAA 591】The Last Alpha Star
- poj -- 2001 Shortest Prefixes (Trie 树)
- POJ 1111 Image Perimeters(dfs)
- PHP数组与对象之间用递归递归转换
- Hadoop集群(第5期)_Hadoop安装配置
- 如何成为优秀的程序员v1.0
- Android ListView 单条刷新方法实践及原理解析
- Hadoop集群(第6期)_WordCount运行详解
- UVa 11346 Probability
- Hadoop集群(第7期)_Eclipse开发环境设置
- POJ -- 1056 IMMEDIATE DECODABILITY (Trie 树)