
算法—搜索
王老大_
奋斗在路上
展开
-
poj 3009 Curling 2.0 (DFS)
题目大意要求把一个冰壶从起点“2”用最少的步数移动到终点“3”其中0为移动区域,1为石头区域,冰壶一旦想着某个方向运动就不会停止,也不会改变方向(想想冰壶在冰上滑动),除非冰壶撞到石头1 或者 到达终点 3 冰壶撞到石头后,冰壶会停在石头前面,此时(静止状态)才允许改变冰壶的运动方向,而该块石头会破裂,石头所在的区域由1变为0. 也就是说,冰壶撞到石头后,并不会取代石头的位原创 2015-04-22 20:27:01 · 465 阅读 · 0 评论 -
HDU 1619 Unidirectional TSP (dp,dfs)
题目大意:要求从左边到右边(注意第1行和最后一行相邻),即:从第1列到最后一列即可,共有三种走法,求最小的代价及打印行号。 三种走法,Sample Input5 63 4 1 2 8 66 1 8 2 7 45 9 3 9 9 58 4 1 3 2 63 7 2 8 6 45 63 4 1 2 8 66 1 8 2 7 45 9原创 2015-05-09 11:05:04 · 380 阅读 · 0 评论 -
HDU 1208 Pascal's Travels( 记忆化搜索)
题目大意:每一小格代表能向右或者向下走几步,问从左上走到右下总共有多少种走法。 dp[i][j]存放该格子有多少总走法。#include #include using namespace std;int n;char a[40][40];int s[40][40];__int64 dp[40][40];int X[]={1, 0原创 2015-05-09 13:06:01 · 628 阅读 · 0 评论 -
poj 1077 Eight (BFS)
八数码问题,各种解法。/*// BFS#include#include#includeusing namespace std;// 把1..n的排列映射为数字 0..(n!-1)int fac[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 };//...int order(const char *s, int原创 2015-05-12 23:58:09 · 720 阅读 · 0 评论 -
poj 1020 Anniversary Cake (DFS)
出处: http://blog.youkuaiyun.com/lyy289065406/article/details/6683250大致题意:有一块边长为BoxSize的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把大蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。 解题思路:有技巧的DFS 可以把大原创 2015-05-06 20:23:07 · 586 阅读 · 0 评论 -
HDU 3647 Tetris (暴力DFS)
题意:给你十个俄罗斯方块,问你能否拼成指定长宽的矩形,方块下落的顺序是严格确定的,后下落的方块不能落在先下落的方块之下。每个俄罗斯方块都是由更小的小方格拼成的, 可以用一个一维数组来记录每一列已经摞上了多少个小方格。DFS遵循底部放满原则,如果可以恰好和已存在的方块实现无缝拼接才往上放,否则回溯。#include #include using namespac原创 2015-05-07 14:29:56 · 568 阅读 · 0 评论 -
HDU 3683 Gomoku (枚举+BFS)
题目大意:给一个五子棋,判断能否在三步内赢棋。分析:一步赢棋,枚举下棋位置看是否有5子出现两步对手赢棋,对手有至少两个位置下棋后可以出现5子三步赢棋,枚举当前己方下棋点,然后判断会不会出现至少两个位置下棋后可以出现5子,这里还得注意枚举的己方下棋后,对手不能出现(1)的情况。#include #include using namespace std;原创 2015-05-07 19:15:09 · 655 阅读 · 0 评论