简单深搜(poj 3009)
题目链接:http://poj.org/problem?id=3009
题目:冰壶撞向目的地,只有遇到“1”才能停下来,并且把“1”撞成“0”。只能横冲直撞,不允许蛇皮走位等等骚操作。从“2”要撞到“3”,周围有“0”,才能向有“0”的地方滑。运动员只能推十次,问最少要多少次才到“3”?
用深搜遍历每一个方向。
1 #include<stdio.h> 2 #include<string.h> 3 int n,m,ans,ans1; ///ans为答案,ans1为中间值 4 int mp[26][26],dx[]={0,-1,1,0},dy[]={-1,0,0,1};///存好方向 5 6 void dfs(int x,int y) 7 { 8 int gx,gy; 9 if(ans1>=ans||ans1>10) return ; ///此处进行枝剪 10 11 for(int i=0;i<4;i++){ ///四个方向 12 gx=x+dx[i],gy=y+dy[i]; 13 14 if(0<=gx&&n>gx&&0<=gy&&m>gy){ 15 if(mp[gy][gx]!=1){ ///不越界,且要走的方向第一个不为 “1” 16 for(;;){ 17 if(gy<0||gy>=m||gx<0||gx>=n) ///越界 18 break ; 19 20 if(mp[gy][gx]==1){ 21 mp[gy][gx]=0; 22 ans1++; 23 dfs(gx-dx[i],gy-dy[i]); 24 ans1--; 25 mp[gy][gx]=1; 26 break ; 27 } 28 29 if(mp[gy][gx]==3){ ///找到“3”即可返回 30 if(ans>ans1) 31 ans=ans1; 32 return ; 33 } 34 35 gy=gy+dy[i]; 36 gx=gx+dx[i]; 37 } 38 } 39 } 40 } 41 return ; 42 } 43 44 int main() 45 { 46 while( ~scanf("%d%d",&n,&m)){ 47 if(n==0&&m==0) break; 48 int nx,ny; 49 for(int i=0;i<m;i++){ 50 for(int j=0;j<n;j++){ 51 scanf("%d",&mp[i][j]); 52 if(mp[i][j]==2) ///找出起点的坐标 53 nx=j,ny=i; 54 } 55 } 56 mp[ny][nx]=0; 57 58 ans=1e7,ans1=1; 59 dfs(nx,ny); 60 if(ans>10) 61 printf("-1\n"); 62 else 63 printf("%d\n",ans); 64 } 65 66 return 0; 67 }
结论:遇到图,不要被问题吓到,无论如何都要动手自己做一遍。
转载于:https://www.cnblogs.com/ZQUACM-875180305/p/8603749.html
简单深搜(poj 3009)相关推荐
- 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝
Sudoku Time Limit: 2000MS Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudo ...
- Oil Deposits(简单深搜)(又名: 僵尸王子的复仇计划)
题目连接: 僵尸王子的复仇计划 题目: 在第一次植物僵尸世界大战中,植物国的黑玫瑰王子使用了植物国的超超超超级无敌禁术-----"BUG",开启了异次元的大门,在一位超超超超-级* ...
- 简单深搜广搜基本模板
简单搜索 DFS: 剪枝,条件 容易超时,超时后基本就是剪枝的问题/无限递归?,或者用广搜试试? 模板(自己的理解) int n,m;//一般输入的行列数/边界 int mov[4][2] = {1, ...
- nyoj-491--幸运三角形--简单深搜枚举(TLE)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=491 悲剧啊,TEL了 #include<stdio.h> #include& ...
- [HDU] 2553 N皇后问题-简单深搜
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2553 方法: 1.可以用对称的思想,即:如果N是偶数,则只计算第一个皇后分别放在第一行的位置1到N/ ...
- 第三道深搜-----------hdu1016
简单深搜.每次对第step个位置进行测试, for(i=2;i<=n;i++) { if(第i个点没有被访问过,并且和为质数) result[step]=i: //则将这个数放入step的位 ...
- 专题一:简单搜索、深搜、广搜
挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...
- POJ 3414 Pots(深搜并打印路径)
POJ 3414 Pots(深搜并打印路径) You are given two pots, having the volume of A and B liters respectively. The ...
- Poj(2488),按照字典序深搜
题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...
最新文章
- python基础语言与应用第五章_《Python基础教程》 读书笔记 第五章(下)循环语句...
- PHP中使用include、require、include_once、require_once的区别
- 1489 蜥蜴和地下室
- 我的世界大佬最多的服务器,《我的世界》门槛最高的红石服务器TIS,看看你跟大佬们的差距吧...
- oneinstack_OneinStack lnmp网站环境部署Namecheap SSL安全证书方法
- java如何实现封装_java如何实现封装
- asp.net core集成CKEditor实现图片上传功能
- bug是什么PHP,bug是什么
- 服务器虚拟化的主备,云服务器可以主备切换
- 简单的对象序列化协议(伪代码)
- 【Java每日一题】20170110
- 现代雷达系统分析与设计---数字中频正交采样
- 【万字专栏总结】离线强化学习(OfflineRL)总结(原理、数据集、算法、复杂性分析、超参数调优等)...
- TensorFlow中CNN的两种padding方式“SAME”和“VALID”
- session的钝化和session的活化(序列化和反序列化)
- 工行u盾显示316_工行U盾无法被电脑识别(方法全集)
- pytorch导出onnx格式模型时,不固定输入输出维度
- Jsoup和JsoupXpath详解
- 数据库备份MySQL
- Rot加密and逆序函数(废话版)