hdoj 1241 Oil Deposits
来源:互联网 发布:js body append html 编辑:程序博客网 时间:2024/06/06 20:44
http://acm.hdu.edu.cn/showproblem.php?pid=1241
整体思路就是扫描每一个map中字符,当然遇到'*'和已标记过的,也就是已走过的跳过,把sum传入函数中,把连同的区域都标记为当前的sum。
#include<stdio.h>#include<string.h>#define MAX 100char map[MAX+10][MAX+10];int judge[MAX+10][MAX+10];//标记 int N,M/*N行M列*/,sum;void DFS(int X,int Y,int J){int i,j,x,y;for(i=-1;i<=1;i++){ for(j=-1;j<=1;j++){ if(i==0&&j==0) continue;//先排除在原位置的情况/*排除走一步以后不能到达的情况*/ x=X+j; y=Y+i;if(x>=0&&x<=N-1&&y>=0&&y<=M-1&&!judge[x][y]&&map[x][y]!='*')//当下一步可以走同时/*1.不越界 2.不走已标记的路 3.不走不通的路 { judge[x][y]=J; DFS(x,y,sum);}}}}int main(){ int i,j,k; while(scanf("%d %d",&N,&M)&&(N||M)) { memset(judge,0,sizeof(judge)); for(i=0;i<N;i++) scanf("%s",map[i]); sum=0; for(i=0;i<N;i++) for(j=0;j<M;j++) if(map[i][j]!='*'&&judge[i][j]==0) DFS(i,j,++sum); printf("%d\n",sum); } return 0;}
DFS函数里的判断
void DFS(int X,int Y,int ...){ int i,j,x,y; for(i=-1;i<=1;i++) for(j=-1;j<=1;j++) { /*1.如果只能走上下左右*/ if(!(i==-1&&j==0||i==0&&j==-1||i==0&&j==1||i==1&&j==0)) continue; //排除除上下左右以外的其他所有组合 /*2.如果上下左右和对角都能走*/ if(i==0&&j==0) continue; //先排除在原位置的情况,也就是走一步以后只有原位置不能到达 x=X+j;//注意这里是X+j y=Y+i;//注意这里是Y+i; if(x>=0&&x<=N-1&&y>=0&&y<=M-1&&!judge[x][y]&&map[x][y]!='*') { //当下一步可以走同时/*1.不越界 2.不走已标记的路 3.不走不通的路 sum+=1//能走一步就加一 DFS(x,y,sum); } } }
0 0
- hdoj 1241 Oil Deposits
- hdoj 1241 Oil Deposits
- HDOJ 1241 Oil deposits
- HDOJ 1241 Oil Deposits
- HDOJ 1241 Oil Deposits
- HDOJ 1241 Oil Deposits
- hdoj 1241 Oil Deposits
- hdoj 1241 Oil Deposits
- hdoj 1241 Oil Deposits
- hdoj 1241 Oil Deposits
- hdoj-1241-Oil Deposits
- HDOJ-1241 Oil Deposits
- HDOJ - 1241 Oil Deposits
- hdoj-1241【Oil Deposits】
- hdoj 1241 Oil Deposits
- hdoj-1241 Oil Deposits
- HDOJ--1241--Oil Deposits【DFS】
- ACM HDOJ 1241 (Oil Deposits)
- LeetCode Container With Most Water
- SSH2项目网上书店系统手把手教学_Struts2+Spring+Hibernate整合开发
- 【荐】matlab、C++、C#学习及代码下载推荐网站
- db_recovery_file_dest_size 满导致数据库启动失败
- 把Matlab中的GUI生成独立的应用程序
- hdoj 1241 Oil Deposits
- 深入浅出的讲解傅里叶变换
- java (功能篇) dom4j 生成xml文件
- ListView具有多种item布局——实现微信对话列
- 第十二周项目3-用递归的方法求解(斐波那契数列)
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (一)搭建你的环境
- 配置1——VI
- python学习笔记一
- Cocos2d-JS 实现X轴自定义视窗跟随