博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
E:Zju1047 Image Perimeters
阅读量:5227 次
发布时间:2019-06-14

本文共 1480 字,大约阅读时间需要 4 分钟。

Problem E: Zju1047 Image Perimeters

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 34  Solved: 18
[][][]

Description

给出一张由"x"和"."组成的矩阵。每个"x"可以向上下左右及两个斜对角进行连通,请问由某个点开始的"x",它所连通的图形的周长为多少。

Input

整个测试有多组数据,整个测试以四个零代表结束。
对于每个数据,第一行给出整个图形的大小(长度小于50),再给出开始点的坐标。接下来若干行用于描述这个图形。

Output

如题

Sample Input

2 2 2 2XXXX6 4 2 3.XXX.XXX.XXX...X..X.X...5 6 1 3.XXXX.X....X..XX.X.X...X..XXX.7 7 2 6XXXXXXXXX...XXX..X..XX..X...X..X..XX.....XXXXXXXX7 7 4 4XXXXXXXXX...XXX..X..XX..X...X..X..XX.....XXXXXXXX0 0 0 0

Sample Output

81840488

HINT

 

此图对应第二个数据

1 #include
2 using namespace std; 3 char amap[23][23]; 4 int pic[23][23]; 5 int h[8][2]={
0,1,0,-1,1,0,-1,0,1,-1,1,1,-1,1,-1,-1}; 6 int x,y,ans; 7 void bfs(int m,int n) 8 { 9 int xx,yy;10 int i;11 for (i=0;i<8;i++)12 {13 xx=m+h[i][0];14 yy=n+h[i][1];15 if (xx==0||yy==0||xx==x+1||yy==y+1||amap[xx][yy]=='.') 16 {17 if(i<4)18 ans++;19 }20 else21 if (pic[xx][yy]==0)22 {23 pic[xx][yy]=1;24 bfs(xx,yy);25 }26 }27 }28 int main()29 {30 int x1,y1;31 while(scanf("%d%d%d%d",&x,&y,&x1,&y1),x!=0||y!=0||x1!=0||y1!=0)32 {33 for(int i=1;i<=x;i++)34 cin>>amap[i]+1;35 memset(pic,0,sizeof(pic));36 pic[x1][y1]=1;37 ans=0;38 bfs(x1,y1);39 cout<
<
Image

 

转载于:https://www.cnblogs.com/LHR-HY/p/6785759.html

你可能感兴趣的文章
this 指向
查看>>
Kruskal基础最小生成树
查看>>
【RabbitMQ】 Java简单的实现RabbitMQ
查看>>
BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
c#中 uint--byte[]--char[]--string相互转换汇总
查看>>
- C#编程大幅提高OUTLOOK的邮件搜索能力!
查看>>
InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
[WebMatrix] 如何将SQL Compact 4.0 移转至SQL Server 2008 Express
查看>>
Java内部类详解
查看>>
python-基础
查看>>
17 案例
查看>>
【BZOJ 1221】 [HNOI2001] 软件开发
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
SQL字符型转日期型
查看>>
js小项目:显示与输入的内容相关的
查看>>
Java程序设计教程(第2版)阅读总结
查看>>
vscode + platformIO开发stm32f4
查看>>
hadoop的三种方式
查看>>