POJ-1111-Image Perimeters
来源:互联网 发布:村嶋孟 知乎 编辑:程序博客网 时间:2024/05/19 00:49
这个题要求你求出所给点周围围成X图形的周长,需要注意的是方向是八个.
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std;struct node{ int x; int y;};int n,m,sx,sy,ans;char map[22][22];int movex[8]={1,0,-1,0,-1,-1,1,1},movey[8]={0,1,0,-1,-1,1,-1,1};bool vis[22][22];queue<node> q;bool isborder(int x,int y){ if(x<0||x>=n||y<0||y>=m)return true; return false;}void BFS(int x,int y){ memset(vis,0,sizeof(vis)); q.push((node){x,y}); vis[x][y]=1; while(!q.empty()) {node v=q.front();q.pop();for(int i=0;i<8;i++){ int itx=v.x+movex[i]; int ity=v.y+movey[i]; if(isborder(itx,ity)) {if(i<4) ans++;continue; } if(map[itx][ity]=='.') {if(i<4) ans++;continue; } if(!vis[itx][ity]) {vis[itx][ity]=1;q.push((node){itx,ity}); }} }}int main(){ while(scanf("%d%d%d%d",&n,&m,&sx,&sy)&&(n+m+sx+sy)) {ans=0;for(int i=0;i<n;i++) scanf("%s",map[i]);sx--;sy--;BFS(sx,sy);printf("%d\n",ans); } return 0;}
- 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
- poj 1111 Image Perimeters
- POJ 1111 Image Perimeters
- POJ:1111 Image Perimeters
- poj 1111:Image Perimeters
- POJ 1111 Image Perimeters
- POJ Image Perimeters 1111
- poj 1111 Image Perimeters
- POJ - 1111 Image Perimeters
- POJ 1111 Image Perimeters
- POJ 1111 Image Perimeters
- POJ 1111 Image Perimeters
- delphi 程序全屏显示无标题栏,覆盖整个屏幕
- EOF简介
- POJ-2676-Sudoku
- linux调优基本策略—ulimit
- c#内存管理
- POJ-1111-Image Perimeters
- 手机摄像头的相关知识
- 民生银行极品服务
- Sax解析xml
- debian linux 中如何查看软件包是否已经安装和如何安装、卸载软件
- android 数据存储之File2(文件存储数据)
- POJ-1118-Lining Up
- CentOS下使用VIM打造C/C++开发环境
- 电容电感测试