题意:

每一次碰到障碍则在障碍的旁边停下来,并且障碍被击碎。此时可以重新值掷一次冰球。当掷球次数超过 10 次则输出 -1。

思路:

1. 超过 10 次输出 -1 这个剪枝很关键;

2. 主要是要注意些边界条件,初始化的情况,代码最终跑了 250ms,比较差,就不多说了。

#include <iostream>
#include <algorithm>
using namespace std;const int INFS = 0x3fffffff;
int grid[25][25], row, col, ans;
int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};inline bool judge(int x, int y) {if (0 < x && x <= row && 0 < y && y <= col) {return true;}return false;
}void dfs(int x, int y, int step) {if (step > 10)return ;for (int i = 0; i < 4; ++i) {int a = x, b = y, cflag = 0;while (judge(a, b)) {a += dir[i][0];b += dir[i][1];cflag += 1;if (grid[a][b] == 3) {ans = min(ans, step + 1);return ;}if (grid[a][b] == 1) break ;}if (grid[a][b] == 1 && cflag > 1) {grid[a][b] = 0;dfs(a-dir[i][0], b-dir[i][1], step+1);grid[a][b] = 1;}}
}int main() {while (scanf("%d%d", &col, &row) && col && row) {int x, y;memset(grid, 0, sizeof(grid));for (int i = 1; i <= row; i++) {for (int j = 1; j <= col; j++) {scanf("%d", &grid[i][j]);if (grid[i][j] == 2) x = i, y = j;}}ans = INFS;dfs(x, y, 0);if (ans <= 10)printf("%d\n", ans);elseprintf("-1\n");}
}

转载于:https://www.cnblogs.com/kedebug/archive/2013/03/18/2966997.html

POJ 3009 Curling 2.0(简单DFS)相关推荐

  1. poj 3009 Curling 2.0 (dfs的应用)

    http://poj.org/problem?id=3009 (1)这是一个用球撞石头的游戏,撞到石头,石碎球停.在规定的10次抛球机会下,若求移动到终点就赢,否则算输了(出界直接算输). (2)每一 ...

  2. POJ 3009 Curling 2.0(深度优先搜索+剪枝)

    POJ 3009  Curling 2.0 题目大意: 在一块光滑的h*w的矩形平面上,有若干个障碍物,用1表示以及空格用0表示.现在有一个小球在平面上的数字2的地方,通过抛掷这个小球,使其达到数字3 ...

  3. POJ 3009 Curling 2.0 {深度优先搜索}

    原题 $On Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules ...

  4. poj 3009 Curling 2.0

    题目链接:点击打开链接 Description On Planet MM-21, after their Olympic games this year, curling is getting pop ...

  5. POJ 3009 Curling 2.0-DFS

    Curling 2.0 题意 就像最强大脑里的一个游戏,从当前位置移动,撞到障碍物后才会停止(所以有可能会冲出地图姐界面),障碍物被撞后会消失,求到达终点的最短路径. 但不同的是,如果路径上可以通过终 ...

  6. POJ 1979 Red and Black (简单dfs)

    题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...

  7. Curling 2.0 - POJ 3009

    参考的这个 思路: 枚举冰球下一个可能所在的所有位置然后DFS. 改了一天的BUG,结果发现这个的长宽是反过来输入的,裂开. #include <iostream> #include &l ...

  8. Curling 2.0{

    题目 Curling 2.0 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22417   Accepted: 9100 D ...

  9. AOJ 0118: Property Distribution (简单DFS)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0118 题意:给定一个矩阵,同类字符相连的为一个块,问总共有几个块. 输入 ...

最新文章

  1. js自定义函数及参数问题
  2. FindStringExact
  3. 【转】[C++]LARGE_INTEGER 类型使用
  4. 【C单链表】链表与尾插法
  5. hazelcast_Hazelcast的MapLoader陷阱
  6. screen 断开 screen -r 不能进入断开的会话
  7. 挺过最艰难的2018,我终将长大
  8. java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
  9. 执行的输出结果保存到文件夹_元素实测点自动保存
  10. vue+element的表格分页和前端搜索
  11. 下载新浪股票历史数据
  12. android 2.2 sdk 下载地址,Android SDK 2.2 离线安装
  13. mysql中between..and的用法
  14. 如何在虚拟机中运行知乎App
  15. P02014250陈彦菁 信息论
  16. 加入AI考拉大家庭,是一种怎样的体验?--来自考拉码农的心声
  17. 深度强化学习DDPG算法高性能Pytorch代码(改写自spinningup,低环境依赖,低阅读障碍)
  18. Bootstrap模板-Minimal.2.1.1
  19. c语言位域变量定义,C语言位域_Lee_1985的博客的技术博客_51CTO博客
  20. 网站关键词排名优化怎么做才能让排名更高?

热门文章

  1. 计算机体系结构----常见英文缩写(待更....)
  2. mysql的索引的作用_数据库索引的作用,优点和缺点
  3. 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
  4. 数学--数论---P4718 Pollard-Rho算法 大数分解
  5. 线性代数 矩阵 行列式基本知识(转)
  6. Source Insight Source Navigator使用技巧
  7. 感知算法论文(四):Mask Scoring R-CNN (2019)译文
  8. “去除更多的鲜艳色彩和动态效果的搭配,精简用户使用步长,让软件更像是一件工具。(不排除以后更先进的吸引眼球的方式)“。
  9. 等额本息和等额本金,哪个还款方式更划算?
  10. html提交本页面,将文本提交到相同的HTML页面