HDU 1198 Farm Irrigation
来源:互联网 发布:des算法与rsa算法 编辑:程序博客网 时间:2024/04/28 17:41
题目链接~~>
开始看这题时第一眼就觉得很难,但是今天做了一下也不过如此,因为一个标记放错了,但是大多数的数据都对 ,wa了好几次,中间差点忍不住 百度一下,以为有什么特殊数据,但是还是忍住了,仔细又看了一次终于把错误找了出来。
代码:
#include<stdio.h>#include<string.h>int n,m ;int vis[60][60] ;char s[60][60] ;int a[60][60][4] ;int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0} ;void dfs(int x,int y){ int nx,ny ;//开始把 int f=1 ;放在这错了好久。。。。 for(int i=0;i<4;i++)//左 上 右 下 { nx=x+dx[i] ; ny=y+dy[i] ; int f=0 ; if(nx>=0&&nx<n&&ny>=0&&ny<m&&!vis[nx][ny]) { if(!i&&a[x][y][0]&&a[nx][ny][2]) f=1 ; else if(i==1&&a[x][y][1]&&a[nx][ny][3]) f=1 ; else if(i==2&&a[x][y][2]&&a[nx][ny][0]) f=1 ; else if(i==3&&a[x][y][3]&&a[nx][ny][1]) f=1 ; if(f) { vis[nx][ny]=1 ; dfs(nx,ny) ; } } }}int main(){ int i,j ; int g[12][4]={{1,1,0,0},{0,1,1,0},{1,0,0,1},{0,0,1,1},//存储管道接口 {0,1,0,1},{1,0,1,0},{1,1,1,0},{1,1,0,1}, {1,0,1,1},{0,1,1,1},{1,1,1,1}} ; while(scanf("%d%d",&n,&m)!=EOF) { if(n<0||m<0) break ; for(i=0;i<n;i++) scanf("%s",s[i]) ; memset(vis,0,sizeof(vis)) ; for(i=0;i<n;i++) for(j=0;j<m;j++) { int mx=s[i][j]-'A' ; for(int k=0;k<4;k++) a[i][j][k]=g[mx][k] ; } int sum=0 ; for(i=0;i<n;i++) for(j=0;j<m;j++) if(!vis[i][j]) { sum++ ; vis[i][j]=1 ; dfs(i,j) ; } printf("%d\n",sum) ; } return 0 ;}
- HDU 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- HDU--1198Farm Irrigation
- hdu 1198 Farm Irrigation
- HDU 1198-Farm Irrigation
- HDU 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- HDU 1198 Farm Irrigation
- HDU 1198 Farm Irrigation
- HDU 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu 1198 Farm Irrigation
- hdu(1198)Farm Irrigation
- hdu 1198 Farm Irrigation
- GDT与LDT
- 调试的艺术——Debug技巧总结
- UNIX环境高级编程---- 进程
- 《编写可读代码的艺术》读书笔记(三)
- 一个程序的结构
- HDU 1198 Farm Irrigation
- 阿里面试题—最长公共子串算法
- hdu 4325 Flowers
- 变量。 数据类型。
- DWORD
- 手把手教你防止无线网络被盗用
- GCC的用法
- POJ 2777 Count Color (线段树、lazy思想)
- kpartx在哪里?