POJ 3009 Curling 2.0
来源:互联网 发布:淘宝都是假货吗 编辑:程序博客网 时间:2024/04/23 18:18
原题链接
思路:深搜
AC代码:
#include <iostream>#include <cstdio> #include <algorithm>#include <cstdlib>#include <cstring>#define INF 1000000using namespace std;//dfs深度搜索 typedef pair<int,int> PII;int data[22][22];int sx,sy,minstep,w,h;int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};int min(int a,int b){ return a<b?a:b;}void dfs(int x,int y,int step){ if(step>=10) return; for(int i=0;i<4;i++){ if(data[x+dx[i]][y+dy[i]]==1) continue; int nx=x,ny=y; int flag=0; while(1){ nx+=dx[i]; ny+=dy[i]; if(nx<0 || nx>=h || ny<0 || ny>=w){ flag=1; break; } if(data[nx][ny]==0) continue; if(data[nx][ny]==1) break; if(data[nx][ny]==3){ minstep=min(minstep,step+1); return; } } if(flag) continue; data[nx][ny]=0; dfs(nx-dx[i],ny-dy[i],step+1); data[nx][ny]=1; }}int main(){ int i,j; while(scanf("%d %d",&w,&h) && w && h){ for(i=0;i<h;i++){ for(j=0;j<w;j++){ scanf("%d",&data[i][j]); getchar(); if(data[i][j]==2){ sx=i,sy=j; data[i][j]='0'; } } } minstep=11; dfs(sx,sy,0); if(minstep==11) printf("-1\n"); else printf("%d\n",minstep); } return 0;}
1 0
- Poj 3009 Curling 2.0
- POJ: 3009 Curling 2.0
- poj 3009 Curling 2.0
- poj 3009 Curling 2.0
- POJ 3009 Curling 2.0
- poj 3009 Curling 2.0
- POJ 3009 Curling 2.0
- POJ-3009-Curling 2.0
- POJ 3009 Curling 2.0
- poj 3009 Curling 2.0
- POJ-3009-Curling 2.0
- POJ 3009 Curling 2.0
- POJ 3009 Curling 2.0
- POJ 3009 Curling 2.0
- poj 3009 Curling 2.0
- poj 3009 Curling 2.0
- poj 3009 - Curling 2.0
- POJ 3009 Curling 2.0
- 设计模式:六大原则
- 求π的近似值
- ZigBee_端点管理_描述符
- 剑指offer 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题
- [笔记]算法复习笔记---栈、队列、链表(下)
- POJ 3009 Curling 2.0
- 15分钟学会使用Git和远程代码库
- 201312 CCF 第二题 ISBN号码
- 为什么mysql要做主从复制?
- applescript to open/close an app
- linux文件系统详解
- 畅游无线游戏盒子(一)--走迷宫
- 静态路由生效条件及loopback通信
- ACM程序设计 -K (移动方块问题)