DFS---Lake Counting&& Oil Deposits&&迷宫问题
来源:互联网 发布:药品进销存软件免费版 编辑:程序博客网 时间:2024/06/06 04:05
#include<stdio.h>#include<string.h>char maze[100][100];int n,m,i,j,sum;int dir[8][2]={ {0,1},{0,-1}, {1,0},{-1,0}, {1,1},{1,-1}, {-1,-1},{-1,1}};int dfs(int x,int y){ for(int i=0;i<8;i++){ int dx=x+dir[i][0],dy=y+dir[i][1]; if(dx>=0&&dy>=0&&dx<n&&dy<m&&maze[dx][dy]=='W'){ maze[dx][dy]='.'; dfs(dx,dy); } }return 0;}int main(){ scanf("%d%d",&n,&m); sum=0; for(int i=0;i<n;i++) scanf("%s",&maze[i]); /*printf("\n"); for(i=0;i<n;i++) printf("%s\n",maze[i]);*/ for(i=0;i<n;i++) for(j=0;j<m;j++) if(maze[i][j]=='W') { maze[i][j]='.';sum++;dfs(i,j); } printf("%d\n",sum); return 0;}
#include<stdio.h>#include<string.h>char maze[100][100];int n,m,i,j,sum;int dir[8][2]={ {0,1},{0,-1}, {1,0},{-1,0}, {1,1},{1,-1}, {-1,-1},{-1,1}};int dfs(int x,int y){ for(int i=0;i<8;i++){ int dx=x+dir[i][0],dy=y+dir[i][1]; if(dx>=0&&dy>=0&&dx<n&&dy<m&&maze[dx][dy]=='@'){ maze[dx][dy]='*'; dfs(dx,dy); } }return 0;}int main(){ while(scanf("%d%d",&n,&m)!=EOF){ sum=0;if(n==0&&m==0) break; for(int i=0;i<n;i++) scanf("%s",&maze[i]); /*printf("\n"); for(i=0;i<n;i++) printf("%s\n",maze[i]);*/ for(i=0;i<n;i++) for(j=0;j<m;j++) if(maze[i][j]=='@') { maze[i][j]='*';sum++;dfs(i,j); } printf("%d\n",sum);} return 0;}
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;int maze[6][6],temproad[25][2],pos=0;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};struct Road{ int r[30][2],step;}roads[11];int dfs(int x,int y,int step){ if(x==4&&y==4){ roads[pos].step=step; for(int i=1;i<step;i++){ roads[pos].r[i][0]=temproad[i][0]; roads[pos].r[i][1]=temproad[i][1];//当到达重点后把temproad复制给roads } pos++; return 0; } for(int i=0;i<4;i++){ int dx=x+dir[i][0],dy=y+dir[i][1]; if(dx>=0&&dy>=0&&dx<5&&dy<5&&!maze[dx][dy]){ maze[dx][dy]=1; temproad[step][0]=dx,temproad[step][1]=dy;//暂时用temproad保存 dfs(dx,dy,step+1); maze[dx][dy]=0;//返回一步,查找别的路线 } }}int main(){ for(int i=0;i<5;i++) for(int j=0;j<5;j++) scanf("%d",&maze[i][j]); dfs(0,0,1); int ans=0; for(int i=1;i<pos;i++) if(roads[i].step<roads[ans].step)//找到第几条路最小 ans=i; for(int i=0;i<roads[ans].step;i++)//输出 printf("(%d, %d)\n",roads[ans].r[i][0],roads[ans].r[i][1]);}
0 0
- DFS---Lake Counting&& Oil Deposits&&迷宫问题
- hdu1241 Oil Deposits 同poj 2386 Lake Counting
- hdu1241 Oil Deposits 同poj 2386 Lake Counting深艘
- ZOJ 1709 Oil Deposits(油田问题DFS)
- Vjudge Oil Deposits 油田问题(dfs)
- Oil Deposits hdu1241 dfs
- Oil Deposits poj DFS
- POJ1562:Oil Deposits(DFS)
- HDU1241:Oil Deposits(DFS)
- hdu1241(DFS Oil Deposits )
- UVa572 Oil Deposits(DFS)
- Oil Deposits DFS水题
- Oil Deposits BFS+DFS
- Oil Deposits uva DFS
- HDU1241:Oil Deposits(DFS)
- 【搜索-DFS】Oil Deposits
- Oil Deposits(DFS)
- poj1562 Oil Deposits(DFS)
- 纵横字谜的答案(Crossword Answers)
- 1589 - Xiangqi
- exe4j 打包java程序
- Android StateMachine和AsyncChannel
- http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
- DFS---Lake Counting&& Oil Deposits&&迷宫问题
- Netty系列之Netty线程模型
- Unity3D之NGUI入坑<二>
- mysql表分区
- 开发手记——基于XMPP的Android即时通讯APP(一)
- LeetCode Search for a Range
- OpenFire源码学习之二:Mina基础知识
- solr undefined field text 异常
- 24天学会设计模式------代理模式