using namespace std; #define MAX_W 20 #define MAX_H 20 int s_x; int s_y; int w; int h; char board[MAX_H+][MAX_W+]; //留边,省得越界检查 int res; int dx[]={,,,-}; int dy[]={,-,,}; void read(void); void dfs(int x,int y,int time); int main(void) { while(...
POJ 3009 ( Curling 2.0 ) 题目链接:http://poj.org/problem?id=3009 题意: (1) 一个球只能沿着上下左右方向移动,且只能走直线,沿着一个方向一直走下去; (2)若碰到障碍物冰块就会停止,停止位置是在障碍物之前的位置,并且停止位置的下一位置的障碍物消失,这种情况算滚动1次; (3)游戏结束的情况是:滚动次数...
POJ 3009 Curling 2.0(dfs) 题目意思就是一个冰壶,要从起点到达终点,你推他一把,他就沿着直线开始滑行,直到撞到一块石头,撞到石头冰壶停止,石头也会消失。但冰壶不会取代那个石头的位置,而是在原来碰撞的位置,问你10次之内能不能到达终点。 用dfs+回溯的方法暴力去搜,顺带剪枝,如果答案大于10了,就不用搜了...
poj 3009 (深搜求最短路) 题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。 写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下: 1#include <cstdi...
POJ3009 Curling 2.0(DFS) 题目链接:http://poj.org/problem?id=3009 题目大意:一块石头在冰面上滑行,冰面上有一些障碍物,只有遇到障碍物的时候才会停止,并且击碎障碍物,击碎之后就可以在上面滑行。如果超出边界,那么游戏结束。当石头贴着障碍物时,石头将不能向障碍物的方向滑行。最后求从出发点到目标点的最小...
POJ3009(Curling 2.0, DFS) while的使用,when aware of next step status, use “while” to deal with it. 转载地址 #include <stdio.h> #include <string.h> const int dh[4]={-1, 0, 1, 0}; const int dw[4]={0, -1, 0, 1};...
poj-3009 //376K 172MS G++ #include <stdio.h> #include <string.h> #define MAX 30 int W; int H; int board[MAX][MAX]; int Sx; int Sy; int Gx; int Gy; #define INF 99999 int dfs(int curX, int curY, int throwTime) {
poj 3009 Curling 2.0(dfs) 2013-01-26 13:49 − 题目:http://poj.org/problem?id=3009 题意: 就是要求把一个冰壶从起点“2”用最少的步数移动到终点“3” 其中0为移动区域,1为石头区域,冰壶会一直向着一个方向走下去,一直撞到石头或者到达终点才能改变方向,撞到石头时会停在... 琳&leen 0 131...
POJ 3009(冰壶问题) 题目链接:https://vjudge.net/problem/POJ-3009 冰壶问题,又是一道经典dfs问题。思路也比较明确,一开始采取全局变量控制x,y,,代码如下 #include<iostream> #include<cstring> using namespace std; int a[25][25]; int q,w,startq,startw,times = 0;...
https://vjudge.net/problem/POJ-3009 题目大意: 问题:打冰球。冰球可以往上下左右4个方向走,只有当冰球撞到墙时才会停下来,而墙会消失。当冰球紧贴墙时,不能将冰球往那个方向打。冰球出界就当输,超过10次还没将冰球打到目标位置也当输。求用最小次数将冰球打到目标位置,或输出-1表示输了。