博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3009 Curling 2.0(dfs)
阅读量:4705 次
发布时间:2019-06-10

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

 
题意:溜石游戏。在一给定大小的矩形冰面上,散布若干石块,给定石头的初始位置和终点,求从起点到达终点的最小步数,超过10次则视作不可达。其中规则如下,若石头与石块有相邻则不能向该方向滑动;每次溜石只能到达有石块的地方,且将其立即敲碎;若出界则视作失败。思路:限制条件较多的dfs,每个状态下有四个方向的选择,注意每个滑动方向中的情况,较繁琐。#include
#include
const int inf=999999;using namespace std;int r,c,step,sx,sy,ex,ey;int inmap(int x,int y){ if(x>=1&&x<=r&&y>=1&&y<=c)return 1; else return 0;}void dfs(int x,int y,int num,int map[][30]){ int i,j,k; if(num>10)return;//注意这的终止条件,我就tle 一次 i=x; j=y; k=num; while(map[i][j+1]==0&&inmap(i,j+1))//向右 { j++; } if(inmap(i,j+1)&&map[x][y+1]!=1) { k++; if(i==ex&&j+1==ey) { step=min(step,k); return ; } map[i][j+1]=0; dfs(i,j,k,map); map[i][j+1]=1; } i=x; j=y; k=num; while(map[i+1][j]==0&&inmap(i+1,j))//向下 { i++; } if(inmap(i+1,j)&&map[x+1][y]!=1) { k++; if(i+1==ex&&j==ey) { step=min(step,k); return ; } map[i+1][j]=0; dfs(i,j,k,map); map[i+1][j]=1; } i=x; j=y; k=num; while(map[i][j-1]==0&&inmap(i,j-1))//向左 { j--; } if(inmap(i,j-1)&&map[x][y-1]!=1) { k++; if(i==ex&&j-1==ey) { step=min(step,k); return ; } map[i][j-1]=0; dfs(i,j,k,map); map[i][j-1]=1; } i=x; j=y; k=num; while(map[i-1][j]==0&&inmap(i-1,j))//向上 { i--; } if(inmap(i-1,j)&&map[x-1][y]!=1) { k++; if(i-1==ex&&j==ey) { step=min(step,k); return ; } map[i-1][j]=0; dfs(i,j,k,map); map[i-1][j]=1; }}int main(){ int map[30][30],i,j; while(scanf("%d%d",&c,&r),r+c) { for(i=1;i<=r;i++) { for(j=1;j<=c;j++) { scanf("%d",&map[i][j]); if(map[i][j]==2) { sx=i; sy=j; map[i][j]=0; } if(map[i][j]==3) { ex=i; ey=j; } } } step=inf; dfs(sx,sy,0,map); if(step!=inf&&step<=10) printf("%d\n",step); else printf("-1\n"); }}

  

转载于:https://www.cnblogs.com/acSzz/archive/2012/04/02/2430476.html

你可能感兴趣的文章
《从零开始学Swift》学习笔记(Day 16)——字典集合
查看>>
NOIP2012Day2 T1/T2题解
查看>>
hdu 2689
查看>>
C#和Unity总结Day01
查看>>
SQLAlchemy中解决数据库访问时出现的Incorrect string value: xxx at row 484
查看>>
5238-整数校验器-洛谷3月赛gg祭
查看>>
IOS 给按钮添加图片
查看>>
适合移动应用的日期时间拾取器
查看>>
【转载】很多女人都希望自己像薛之荔。但每个人心里都有一面是赵雯。
查看>>
JS设计模式(10)职责链模式(重要)
查看>>
三表查询、用到子查询,
查看>>
luogu P1726 上白泽慧音
查看>>
简单登录实例Login
查看>>
Leetcode: Bulb Switcher
查看>>
django和celery结合应用
查看>>
录制声音并且播放录取的声音
查看>>
CSS笔记
查看>>
android UI
查看>>
第2章 Internet地址结构 [TCP/IP详解 卷1:协议]
查看>>
软件测试笔试题及答案-部分
查看>>