05 2015 档案
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1423思路分析:[问题定义]给定两个序列A[0, 1,..., m]和B[0, 1, ..., n],要求这两个序列的最长公共上升子序列;该问题为动态规划问题,可以采用与求最长公共子序列与最长上升子序列相...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1088思路分析:1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度;2>状态转移方程:由于由位置[i, j]只能向四个方向移动,所以子问题最多有四个;所以dp[i][j]为其邻域可以滑雪的最大区域长度加...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2192思路分析:该问题可以看做dp问题,同时也可以使用dfs搜索求解,这里使用dp解法;设字符串StrA[0, 1, …, n]和StrB[0,1, .., m]构成字符串Str[0, 1, … , m + n + 1];1)状态定义:...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1836思路分析:假设数组为A[0, 1, …, n],求在数组中最少去掉几个数字,构成的新数组B[0, 1, …, m]满足条件B[0] … > B[m];该问题实质为求A[0, …, k]的最长递增子序列和A[j, …, n]中的最...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2533思路分析:该问题为经典的最长递增子序列问题,使用动态规划就可以解决;1)状态定义:假设序列为A[0, 1, .., n],则定义状态dp[i]为以在所有的递增子序列中以A[i]为递增子序列的最后一个数字的所有递增子序列中的最大长度...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1050思路分析:该题目为经典的最大子矩阵和问题,属于线性dp问题;最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而最大子矩阵为二维问题,可以考虑将二维问题转换为一维问题,即变为最大子段和问题即可求解;先考虑暴力解法,暴...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2593思路分析:该问题为求给定由N个整数组成的序列,要求确定序列A的2个不相交子段,使这m个子段的最大连续子段和的和最大。该问题与poj 2479相同,解法也一样;代码如下:#include #include using namespa...
阅读全文
摘要:题目链接:http://poj.org/problem?id=2479思路分析:假设数组为A[1, 2, …, n],则问题需要求数组A[s1, s1+1, …, t1]中的最大连续子段和与A[s2, …. , t2]中的最大连续子段和的和最大;该问题实质上可以转换为求数组的最大子段和问题,只要预处...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003思路分析:该问题为最大连续子段和问题,使用动态规划求解;1)最优子结构:假设数组为A[0, 1, 2,….., n],在所有的可能的解中,即解空间中找出所有的解,可以知道,所有的解都为以A[j](j...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3356思路分析:题目为经典的编辑距离问题,其实质为动态规划问题;编辑距离问题定义:给定一个字符串source,可以对其进行复制,替换,删除,增加操作,另外根据具体情况已经规定了每种操作的cost,现在要求求出一个操作序列,使其变为一个给...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 思路分析:该问题为数独问题,明显解是唯一的,所有采用dfs搜索效果更好; 在搜索时,可以通过3个数组来判断对于某个特定的数是否能够满足要求,即在每一行、每一列和每一个3X3的方块中只有唯一的1~9之间的数; vis_r数组:如果vis_r[i][j] == 1表示在第i行中数字j已经存在,...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1166思路分析:题目要求求出一个最短的操作序列来使所有的clock为0,所以使用bfs;被搜索结点的父子关系的组织:在bfs中,队列中存储着解答树中搜索过的结点,并且每个结点都可以使用它在队列中的位置作为其唯一的ID;另外,使用另一个数...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429思路分析:题目要求找出最短的逃亡路径,但是与一般的问题不同,该问题增加了门与钥匙约束条件;考虑一般的搜索问题的解答思路:搜索算法即在解空间中搜索满足要求的答案,可以看做一棵不断生长的状态树,状态之间...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1427思路分析:题目要求判断是否存在一种运算组合使得4个数的计算结果为24,因为搜索的层次为3层,不需要选择出最短的路径,采用dfs更有效;拓展状态时,从当前状态拥有的数中选取两个进行某种运算(因为两个数...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043思路分析: 搜索算法: A*算法,Heuristic函数:曼哈顿距离 剪枝技巧: 如果8数码问题中的初始状态的逆序数为奇数(除了’x’),则不存在解;否则,存在解;代码如下:#include #in...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1077思路分析:题目要求在找出最短的移动路径,使得从给定的状态到达最终状态。搜索算法选择:由于需要找出最短的移动路径,所以选择bfs搜索判重方法:将空格视为数字9,则可以将状态的集合视为1-9的排列组合的集合,根据康托展开,将每一个状态...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102思路分析:搜索方法分析:由于需要寻找最短的找到公主的路径,所以采用bfs搜索需要注意的地方:1)如果当前状态为'#'字符,需要传送到另外一层,但是从该层到另外一层的时间是不会计算;2)如果当前状态为...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1226思路分析:题目要求寻找一串长度不大于500的C进制的密码,且该密码需要为十进制数N的整数倍。搜索方式选择:由于密码的长度未知(题目限制最大为500),所以状态树的深度比较深,采用dfs搜索效率比较低...
阅读全文

浙公网安备 33010602011771号