POJ 3009 Curling 2.0(简单DFS)
题意:
每一次碰到障碍则在障碍的旁边停下来,并且障碍被击碎。此时可以重新值掷一次冰球。当掷球次数超过 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)相关推荐
- poj 3009 Curling 2.0 (dfs的应用)
http://poj.org/problem?id=3009 (1)这是一个用球撞石头的游戏,撞到石头,石碎球停.在规定的10次抛球机会下,若求移动到终点就赢,否则算输了(出界直接算输). (2)每一 ...
- POJ 3009 Curling 2.0(深度优先搜索+剪枝)
POJ 3009 Curling 2.0 题目大意: 在一块光滑的h*w的矩形平面上,有若干个障碍物,用1表示以及空格用0表示.现在有一个小球在平面上的数字2的地方,通过抛掷这个小球,使其达到数字3 ...
- POJ 3009 Curling 2.0 {深度优先搜索}
原题 $On Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules ...
- poj 3009 Curling 2.0
题目链接:点击打开链接 Description On Planet MM-21, after their Olympic games this year, curling is getting pop ...
- POJ 3009 Curling 2.0-DFS
Curling 2.0 题意 就像最强大脑里的一个游戏,从当前位置移动,撞到障碍物后才会停止(所以有可能会冲出地图姐界面),障碍物被撞后会消失,求到达终点的最短路径. 但不同的是,如果路径上可以通过终 ...
- POJ 1979 Red and Black (简单dfs)
题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...
- Curling 2.0 - POJ 3009
参考的这个 思路: 枚举冰球下一个可能所在的所有位置然后DFS. 改了一天的BUG,结果发现这个的长宽是反过来输入的,裂开. #include <iostream> #include &l ...
- Curling 2.0{
题目 Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22417 Accepted: 9100 D ...
- AOJ 0118: Property Distribution (简单DFS)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0118 题意:给定一个矩阵,同类字符相连的为一个块,问总共有几个块. 输入 ...
最新文章
- js自定义函数及参数问题
- FindStringExact
- 【转】[C++]LARGE_INTEGER 类型使用
- 【C单链表】链表与尾插法
- hazelcast_Hazelcast的MapLoader陷阱
- screen 断开 screen -r 不能进入断开的会话
- 挺过最艰难的2018,我终将长大
- java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
- 执行的输出结果保存到文件夹_元素实测点自动保存
- vue+element的表格分页和前端搜索
- 下载新浪股票历史数据
- android 2.2 sdk 下载地址,Android SDK 2.2 离线安装
- mysql中between..and的用法
- 如何在虚拟机中运行知乎App
- P02014250陈彦菁 信息论
- 加入AI考拉大家庭,是一种怎样的体验?--来自考拉码农的心声
- 深度强化学习DDPG算法高性能Pytorch代码(改写自spinningup,低环境依赖,低阅读障碍)
- Bootstrap模板-Minimal.2.1.1
- c语言位域变量定义,C语言位域_Lee_1985的博客的技术博客_51CTO博客
- 网站关键词排名优化怎么做才能让排名更高?
热门文章
- 计算机体系结构----常见英文缩写(待更....)
- mysql的索引的作用_数据库索引的作用,优点和缺点
- 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
- 数学--数论---P4718 Pollard-Rho算法 大数分解
- 线性代数 矩阵 行列式基本知识(转)
- Source Insight Source Navigator使用技巧
- 感知算法论文(四):Mask Scoring R-CNN (2019)译文
- “去除更多的鲜艳色彩和动态效果的搭配,精简用户使用步长,让软件更像是一件工具。(不排除以后更先进的吸引眼球的方式)“。
- 等额本息和等额本金,哪个还款方式更划算?
- html提交本页面,将文本提交到相同的HTML页面