POJ 3009(Dfs)
来源:互联网 发布:单片机是什么意思 编辑:程序博客网 时间:2024/05/29 12:31
题目链接:http://poj.org/problem?id=3009
题意:冰壶在冰面上滑行,直至遇到石块或者出界才会静止,遇到石块会直接将石块击碎,并且停留与石块的相邻的格子上,给定起点S和终点G,
判断冰壶能否在10次以内从S滑行到G,如果能,求最小次数。
因为每次搜索地图都会改变,所以Bfs行不通,可以用Dfs+回溯来实现这一点。每次向一个方向一直遍历,直至无法滑行,然后改变地图继续搜索,
搜索完之后再回溯还原地图。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;const int INF=0x3f3f3f3f;const int maxn=25;int T,n,m;int map[maxn][maxn];int sx,sy,ex,ey,minStep;int dx[]={-1,1,0,0};int dy[]={0,0,-1,1};int judge_State(int x,int y){if(x<0||x>=n||y<0||y>=m) return -1;if(map[x][y]==1) return 1;return 0;}void Dfs(int x,int y,int step){if(step>=10) return ;int sign;for(int i=0;i<4;i++){int tmpx=x+dx[i];int tmpy=y+dy[i];if(judge_State(tmpx,tmpy)) continue;while(!(sign=(judge_State(tmpx,tmpy)))){if(tmpx==ex&&tmpy==ey){minStep=min(minStep,step+1);return ;}tmpx=tmpx+dx[i];tmpy=tmpy+dy[i];}if(sign==1){map[tmpx][tmpy]=0;Dfs(tmpx-dx[i],tmpy-dy[i],step+1);map[tmpx][tmpy]=1;}}}int main(){#ifndef ONLINE_JUDGE freopen("test.in","r",stdin); freopen("test.out","w",stdout);#endifwhile(~scanf("%d%d",&m,&n)){if(!m&&!n) break;memset(map,0,sizeof(map));for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%d",&map[i][j]);if(map[i][j]==2)sx=i,sy=j;if(map[i][j]==3)ex=i,ey=j;}}minStep=INF;Dfs(sx,sy,0);if(minStep==INF) printf("-1\n");else printf("%d\n",minStep);}return 0;}
0 0
- POJ 3009(Dfs)
- POJ 一 3009 Curling 2.0(DFS)
- POJ 3009 Curling 2.0(棋盘DFS)
- poj 3009 Curling 2.0(DFS)
- poj 3009 Curling 2.0(dfs)
- poj 3009 Curling 2.0 (dfs )
- poj 3009 Curling 2.0(dfs)
- POJ 3009-Curling 2.0(DFS)
- POJ 3009 Curling 2.0(DFS)
- POJ 3009 Curling 2.0 (dfs)
- Poj 3009 Curling 2.0 (Dfs)
- POJ 3009 Curling 2.0 (dfs剪枝)
- poj 3009 Curling 2.0(DFS)
- poj 3009 Curling 2.0 (DFS)
- poj 3009 Curling 2.0 (DFS)
- POJ 3009 Curling 2.0(dfs)
- POJ - 3009 Curling 2.0(DFS,模拟)
- POJ 题目3009 Curling 2.0(DFS)
- Java程序员在用的大数据工具
- 图片整理
- 204_矩阵乘幂多项式 Matrix power series (POJ 3233)
- JMS--Spring整合JMS(二)——三种消息监听器
- 《iOS Human Interface Guidelines》——VoiceOver
- POJ 3009(Dfs)
- 常用的正则表达式
- 编程感悟
- cocos2d-x系列教程
- windows下的API拦截---利用detours库操作
- iOS中XML解析
- Android控件的隐藏与显示
- JavaScript 严格模式
- 在华硕 K450V上安装win7系统