题目链接: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)相关推荐

  1. 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudo ...

  2. Oil Deposits(简单深搜)(又名: 僵尸王子的复仇计划)

    题目连接: 僵尸王子的复仇计划 题目: 在第一次植物僵尸世界大战中,植物国的黑玫瑰王子使用了植物国的超超超超级无敌禁术-----"BUG",开启了异次元的大门,在一位超超超超-级* ...

  3. 简单深搜广搜基本模板

    简单搜索 DFS: 剪枝,条件 容易超时,超时后基本就是剪枝的问题/无限递归?,或者用广搜试试? 模板(自己的理解) int n,m;//一般输入的行列数/边界 int mov[4][2] = {1, ...

  4. nyoj-491--幸运三角形--简单深搜枚举(TLE)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=491 悲剧啊,TEL了 #include<stdio.h> #include& ...

  5. [HDU] 2553 N皇后问题-简单深搜

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2553 方法: 1.可以用对称的思想,即:如果N是偶数,则只计算第一个皇后分别放在第一行的位置1到N/ ...

  6. 第三道深搜-----------hdu1016

    简单深搜.每次对第step个位置进行测试, for(i=2;i<=n;i++) { if(第i个点没有被访问过,并且和为质数) result[step]=i:   //则将这个数放入step的位 ...

  7. 专题一:简单搜索、深搜、广搜

    挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...

  8. POJ 3414 Pots(深搜并打印路径)

    POJ 3414 Pots(深搜并打印路径) You are given two pots, having the volume of A and B liters respectively. The ...

  9. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

最新文章

  1. python基础语言与应用第五章_《Python基础教程》 读书笔记 第五章(下)循环语句...
  2. PHP中使用include、require、include_once、require_once的区别
  3. 1489 蜥蜴和地下室
  4. 我的世界大佬最多的服务器,《我的世界》门槛最高的红石服务器TIS,看看你跟大佬们的差距吧...
  5. oneinstack_OneinStack lnmp网站环境部署Namecheap SSL安全证书方法
  6. java如何实现封装_java如何实现封装
  7. asp.net core集成CKEditor实现图片上传功能
  8. bug是什么PHP,bug是什么
  9. 服务器虚拟化的主备,云服务器可以主备切换
  10. 简单的对象序列化协议(伪代码)
  11. 【Java每日一题】20170110
  12. 现代雷达系统分析与设计---数字中频正交采样
  13. 【万字专栏总结】离线强化学习(OfflineRL)总结(原理、数据集、算法、复杂性分析、超参数调优等)...
  14. TensorFlow中CNN的两种padding方式“SAME”和“VALID”
  15. session的钝化和session的活化(序列化和反序列化)
  16. 工行u盾显示316_工行U盾无法被电脑识别(方法全集)
  17. pytorch导出onnx格式模型时,不固定输入输出维度
  18. Jsoup和JsoupXpath详解
  19. 数据库备份MySQL
  20. Rot加密and逆序函数(废话版)

热门文章

  1. 关于linux防火墙
  2. Linux下修改swap的大小
  3. CNKI中银屑病、大肠菌群、内毒素LPS(调研手稿三)
  4. mysql8 grant语法失效
  5. 递归删除文件夹下面所有子文件夹中的.pyc后缀文件
  6. python报告 No module named 'main'错误
  7. 2020 华为杯 数模 B题 数据挖掘
  8. 针对eclipse调式代码时打断点出现斜杠的解决方法
  9. shell脚本编程规范与变量
  10. [Animations] 快速上手 iOS10 属性动画