随笔分类 - 算法
摘要:题目描述:要求两字符串有差异的字符个数。例如: aaaaabaaaaa aaaaacaabaa 这两个字符串,最大公共字串长度是5,但它们只有两个字符不同,函数输出值应为2。 如果是: aaabbbcccddd aaaeeeddd 函数的输出值应该是6。 比较形象地形容一下,把两个字符串排成上下两行,每个字符串都可以在任何位置插入空格以便上下对齐,每个列上至少有一个字符来自这两个字符串。当对齐程度最高的时候,没有对上的列的数即为函数输出值。aaabbbcccddd aaaeeeddd 最优对齐状态是: aaabbbcccddd aaaeee ddd 没有对上的列是6,函数输出值为6。 如果是:
阅读全文
摘要:/******************************************************************** ** @file test.cpp ** @author liuke ** @date Fri Apr 22 23:50:50 2011 ** @brief **************************动态规划实现******************************** 长度为m的数组f[1...m]中存放一系列子结果,即f[i]为要凑的钱数为i时 所需的最少硬币数,则c[m]为所求; 当要找的钱数...
阅读全文
摘要:问题描述:给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。依此定义,所求的最优值为:例如,当(a1,a2 , a3 , a4 , a5 ,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为:11+(-4)+13 =201、最大子段和问题的简单算法:代码:#include<iostream>
using namespace std;
int MaxSum(int a[],int n,int &besti,int &bestj){ int sum=0; int i,j,k; f
阅读全文
摘要:由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。 用c[i][j]记录序列X和Y的最长公共子序列的长度,其中, Xi={x1,x2,…,xi};Yj={y1,y2,…,yj}。当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。故此时C[i][j]=0。其他情况下,由最优子结构性质可建立递归关系如下:void LCSLength( int m,int n,char *x,char *y,int **c,int **b ) //c[i][j] 记录Xi和Yj 的最长公共子序列长,
{ int i,j; ...
阅读全文
摘要:附:USACO中的背包问题USACO是USA Computing Olympiad的简称,它组织了很多面向全球的计算机竞赛活动。USACO Trainng是一个很适合初学者的题库,我认为它的特色是题目质量高,循序渐进,还配有不错的课文和题目分析。其中关于背包问题的那篇课文 (TEXT Knapsack Problems) 也值得一看。另外,USACO Contest是USACO常年组织的面向全球的竞赛系列,在此也推荐NOIP选手参加。我整理了USACO Training中涉及背包问题的题目,应该可以作为不错的习题。其中标加号的是我比较推荐的,标叹号的是我认为对NOIP选手比较有挑战性的。题目列
阅读全文


浙公网安备 33010602011771号