博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 2412 Farm Irrigation
阅读量:6483 次
发布时间:2019-06-23

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

转载请注明出处:http://blog.csdn.net/a1dark

分析:蛋蛋疼、跟上一题一样、图的DFS遍历、不过这里需要预处理一下字符、然后再DFS、

 

#include
#include
#include
using namespace std;char mp[55][55];int used[55][55];int N,m,sum;struct node{ int up,down,left,right;};node n[11]={
{1,0,1,0},{1,0,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,0},{0,0,1,1},{1,0,1,1},{1,1,1,0},{0,1,1,1},{1,1,0,1},{1,1,1,1}}; //保存农田形状int getnode(char x){ return x-'A';}int cango(int x,int y){ if(x<=0||x>m||y<=0||y>N) return 0; return 1;}void dfs(int x,int y){ int i,j,k,xx,yy; for(i=0;i<4;i++){ if(i==0){ //上走 xx=x-1; yy=y; if(cango(xx,yy)&&!used[xx][yy]&&n[getnode(mp[xx][yy])].down&&n[getnode(mp[x][y])].up){ used[xx][yy]=1; dfs(xx,yy); } } else if(i==1){ xx=x+1; yy=y; if(cango(xx,yy)&&!used[xx][yy]&&n[getnode(mp[xx][yy])].up&&n[getnode(mp[x][y])].down){ used[xx][yy]=1; dfs(xx,yy); } } else if(i==2){ xx=x; yy=y-1; if(cango(xx,yy)&&!used[xx][yy]&&n[getnode(mp[xx][yy])].right&&n[getnode(mp[x][y])].left){ used[xx][yy]=1; dfs(xx,yy); } } else if(i==3){ xx=x; yy=y+1; if(cango(xx,yy)&&!used[xx][yy]&&n[getnode(mp[xx][yy])].left&&n[getnode(mp[x][y])].right){ used[xx][yy]=1; dfs(xx,yy); } } }}int main(){ int i,j,k; while(scanf("%d%d",&m,&N)&&N!=-1&&m!=-1){ sum=0; memset(used,0,sizeof(used)); for(i=1;i<=m;i++) for(j=1;j<=N;j++){ scanf("%1s",&mp[i][j]); } for(i=1;i<=m;i++) for(j=1;j<=N;j++){ if(used[i][j]==0){ sum++; dfs(i,j); } } cout<
<

 

 

你可能感兴趣的文章
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Pyrex也许是一个好东西
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>
彻底学会使用epoll(一)——ET模式实现分析
查看>>
脱离标准文档流(2)---定位
查看>>
IO流之字符流
查看>>
集合异常之List接口
查看>>
Softmax回归
查看>>
紫书 习题11-11 UVa 1644 (并查集)
查看>>