摘要: DP经典问题,石子合并描述:在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。/*石子合并问题由于石子是未成一圈,所以首先我们要把圆圈剪断变成一条直线,而这样的直线有n条(每个石子都可以作为直线的开头)接下来我们就考虑直线的石子合并问题,这个其实就是矩阵链乘法dp[i][j]=min{ dp[i][k]+dp[k+1][j]+cost } cost为本次合并带来的代价,cost=ai+ai+1+ai+2……aj*/#include 阅读全文
posted @ 2013-02-25 16:31 Titanium 阅读(1119) 评论(0) 推荐(0) 编辑
摘要: DP(经典题):字符串最短编辑距离关于计算最短编辑距离的资料有很多,这里不详说,这题还要求输出路径,并且注意到是实时的输出,关键在于输出中的那个数字,即位置代码中已经有详细分析/*dp[i][j]表示a串前i个字符和b串前j个字符的最短编辑距离1.dp[i][j]=dp[i-1][j]+1 即先删除a串的第i个字符,然后使其前i-1个字符与b串的前j个字符相同2.dp[i][j]=dp[i][j-1]+1 即先让a串的前i个字符和b串的前j-1个字符相同,然后再在a串后面插入b[j]这个字符3.dp[i][j]=dp[i-1][j-1]+(a[i]==b[j]?0:1) 即先让a串前i-1.. 阅读全文
posted @ 2013-02-25 15:25 Titanium 阅读(738) 评论(0) 推荐(0) 编辑