
OJ
Q_C
这个作者很懒,什么都没留下…
展开
-
POJ1088 滑雪
题意:见 http://poj.org/problem?id=1088思路: 这道题的第一想法就是利用回溯法遍历,以每个节点为起点都试一遍,但是肯定会超时。感觉这道题目像是动态规划和回溯结合了一下,大大减少了搜索次数。基本思路就是以每个节点为起始点进行遍历,在遍历的过程中记录所遍历节点能到达的最大长度,即 len[i][j]=max(向左走,向下走,向右走,向上走)+1对于已经原创 2016-03-01 18:59:53 · 272 阅读 · 0 评论 -
POJ 1837 Balance
题意: 有一个天平,天平上有若干钩子,钩子上可以挂勾码。现天平上有C个钩子,G个勾码,每个勾码的重量已知。求将勾码全部挂到钩子上且使天平平衡的方法种数。思路: 利用动态规划求解。 假设表征天平倾斜度的量=重量*距天平中心点的距离,中心点左边距离为负,中心点右边距离为正。 定义dp[i][j]表示在挂了前i个重物,天平倾斜度为j的放置方法总数。 c[i]记录钩子距天平中心点的距离。 w[i原创 2016-04-27 09:21:44 · 448 阅读 · 0 评论 -
POJ 1503 Integer Inquiry
题意: 大数加法。其中,每个整数最多有100位,最多有100个整数相加。思路: 将整数的每一位存储在数组中,模拟加法过程即可。代码如下:#include <iostream>using namespace std;#define MAXLen 110void char2int(char data[]){ int len = 0; //字符串长度 //字符串逆序 le原创 2016-04-26 18:08:39 · 362 阅读 · 0 评论 -
POJ 1493 Machined Surfaces
题意: 现有几行字符串,字符串的中间有一些连续的空格。现将字符串整体平移,当,某一行字符串没有空格的时候,平移结束。问平移后剩余多少字符串。思路: 本题比较简单。统计每一行的空格个数,然后每一行空格个数减去最小空格个数,将得到的结果相加即可。代码如下:#include <iostream>using namespace std;int main(){ char data[30];原创 2016-04-26 17:57:15 · 313 阅读 · 0 评论 -
POJ 1163 The Triangle
题意: 现有一个数字三角形,如下所示: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 现从三角形的顶部走,每次只能走这个数字的左下角或右下角的数字,要一直走到最后一行。对于每一条从第一行到最后一行的路径,其路径和定义为把所有经过的数字的加和。求最大的路径和。思路: 利用动态规划进行求解。 定义 data[i][j]存储所输入的原创 2016-04-26 17:44:10 · 208 阅读 · 0 评论 -
POJ1125 Stockbroker Grapevine
题意: 现有N个股票经纪人,他们之间存在单向的通信路径,不同通信路径有不同的长度。现在有一个消息要在他们中进行传递。问要从哪一个人开始出发,才能使消息传遍所有人并且用时最短。如果不存在这样一个人,输出disjoint。思路:利用floyd算法,求出所有节点之间的最短路径。计算每个人开始传递所需要的时间,取最小值。 注意:消息的传递可以同时进行。代码如下:#include <iostream>#原创 2016-03-15 09:30:47 · 338 阅读 · 0 评论 -
POJ 1160
题意: 把一条高速公路看成一个数轴,在此高速公路上有V个村庄。现知道每个村庄在数轴上的位置,要需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离之和最小,求最小距离和。思路: 利用动态规划算法求解。 假设数组dp[i][j]表示前j个村庄,建i个邮局的最短距离和; 数组cost[i][j]表示从村庄i到村庄j建一个邮局,所得最短距离。 当从村庄i到村庄j之间只建一个邮局时,将邮局原创 2016-04-05 21:02:58 · 607 阅读 · 0 评论 -
POJ1080 Human Gene Functions
题意: 给出两组基因序列,给定每个基因字母与基因字母之间,以及基因字母与空格之间的相似度,求两组基因序列的最大相似度。其中,空格和空格不能相对。思路: 此题和最长公共子序列的求解方法类似,利用动态规划进行求解。 假设 res[i][j] 表示基因序列a的前i个基因与基因序列b的前j个基因的最大相似度,则可得递推关系式: res[i][j] = max(res[i - 1][j - 1] + V原创 2016-03-08 17:23:40 · 284 阅读 · 0 评论 -
POJ1321 棋盘问题
题目大意: 题目为中文,见http://poj.org/problem?id=1321思路: 看到这个题,我最容易联想到八皇后问题。我认为本题与八皇后问题唯一不同的一点在于八皇后问题每一行必定会放一个棋子,而本题中有的行可能不需要放棋子。与八皇后思路相同,本题也采用深度优先搜索,对每一行进行深度优先搜索,要注意不放皇后的情况。代码如下:#include <iostream>using names原创 2016-03-06 13:33:12 · 252 阅读 · 0 评论 -
POJ1050 To the Max
题意: 求最大子矩阵和。其中一个矩阵的和定义为矩阵中所有元素相加的和。输入: 首先输入一个N,然后输入一个N*N的矩阵输出: 输出结果即为最大子矩阵和思路: 本题是一道经典的动态规划题目。可以联想到最大子段和的求解方法。最大子段和的求解方法: 假设data[]数组存储原始的数据,记res[i]表示包含data[i]元素在内的前i + 1个元素的最大子段和(此子段必须包含data[i]),则原创 2016-02-29 20:06:12 · 369 阅读 · 0 评论 -
POJ 1979 Red and Black
题意: 输入一个字符矩阵,其中,‘#’代表不能走的地方,‘.’代表可以走的地方,‘@’代表起点。问从起点开始,最多可以走多少格子。思路: 直接DFS,深度优先搜索。每走过一个格子,计数器加1。代码如下:#include <iostream>using namespace std;#define MAXNUM 25int counter = 0;char data[MAXNUM][MAXNUM]原创 2016-04-28 16:44:19 · 292 阅读 · 0 评论