摘要: 题目描述:要求两字符串有差异的字符个数。例如: aaaaabaaaaa aaaaacaabaa 这两个字符串,最大公共字串长度是5,但它们只有两个字符不同,函数输出值应为2。 如果是: aaabbbcccddd aaaeeeddd 函数的输出值应该是6。 比较形象地形容一下,把两个字符串排成上下两行,每个字符串都可以在任何位置插入空格以便上下对齐,每个列上至少有一个字符来自这两个字符串。当对齐程度最高的时候,没有对上的列的数即为函数输出值。aaabbbcccddd aaaeeeddd 最优对齐状态是: aaabbbcccddd aaaeee ddd 没有对上的列是6,函数输出值为6。 如果是: 阅读全文
posted @ 2011-11-26 22:53 爱生活,爱编程 阅读(6625) 评论(2) 推荐(0) 编辑
摘要: /******************************************************************** ** @file test.cpp ** @author liuke ** @date Fri Apr 22 23:50:50 2011 ** @brief **************************动态规划实现******************************** 长度为m的数组f[1...m]中存放一系列子结果,即f[i]为要凑的钱数为i时 所需的最少硬币数,则c[m]为所求; 当要找的钱数... 阅读全文
posted @ 2011-11-26 22:35 爱生活,爱编程 阅读(2742) 评论(1) 推荐(1) 编辑
摘要: 问题描述:给定由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 阅读全文
posted @ 2011-11-26 22:23 爱生活,爱编程 阅读(10611) 评论(0) 推荐(1) 编辑
摘要: 由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。 用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; ... 阅读全文
posted @ 2011-11-26 22:13 爱生活,爱编程 阅读(1031) 评论(0) 推荐(0) 编辑