- 4
- 0
- 约1.06万字
- 约 50页
- 2018-01-30 发布于浙江
- 举报
程序设计实习(II)19_动态规划
最长公共子序列 Sample Input abcfbc abfcab programming contest abcd mnp Sample Output 4 2 0 输入两个子串s1,s2, 设MaxLen(i,j)表示: s1的左边i个字符形成的子串,与s2左边的j个字符形成的子串的最长公共子序列的长度 MaxLen(i,j) 就是本题的“状态” 假定 len1 = strlen(s1),len2 = strlen(s2) 那么题目就是要求 MaxLen(len1,len2) 最长公共子序列 显然:MaxLen(n,0) = 0 ( n= 0…len1) MaxLen(0,n) = 0 ( n=0…len2) 递推公式: if ( s1[i-1] == s2[j-1] ) MaxLen(i,j) = MaxLen(i-1,j-1) + 1; else MaxLen(i,j) = Max(MaxLen(i,j-1), MaxLen(i-1,j) ); 最长公共子序列 S1 s1[i-1] S2 s2[j-1] S1i-1 S2j-1 S1长度为 i S2长度为 j MaxLen(S1,S2)不会比MaxLen(S1,S2j-1) 和 MaxLen(S1i-1,S2)都大,也不会比两者中任何一个小 #include iostream.h #include string.h char sz1[1000]; char sz2[1000]; int anMaxLen[1000][1000]; main() { while( cin sz1 sz2 ) { int nLength1 = strlen( sz1); int nLength2 = strlen( sz2); int nTmp; int i,j; for( i = 0;i = nLength1; i ++ ) anMaxLen[i][0] = 0; for( j = 0;j = nLength2; j ++ ) anMaxLen[0][j] = 0; for( i = 1;i = nLength1;i ++ ) { for( j = 1; j = nLength2; j ++ ) { if( sz1[i-1] == sz2[j-1] ) anMaxLen[i][j] = anMaxLen[i-1][j-1] + 1; else { int nLen1 = anMaxLen[i][j-1]; int nLen2 = anMaxLen[i-1][j]; if( nLen1 nLen2 ) anMaxLen[i][j] = nLen1; else anMaxLen[i][j] = nLen2; } } } cout anMaxLen[nLength1][nLength2] endl; } } 活学活用 掌握递归和动态规划的思想,解决问题时灵活应用 例题: POJ 1661 Help Jimmy Help Jimmy 是在下图所示的场景上完成的游戏: 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX米,不然就会摔死,游戏也会结束。 设计一个程序,计算Jimmy到地面时可能的最早时间。 输入数据 第一行是测试数据的组数t(0 = t = 20)。每组测试数据的第一行是四个整数N,X,Y,MAX,用空格分隔。N是平台的数目(不包括地面),X和Y是Jimmy开始下落的位置的横竖坐标,MAX是一次下落的最大高度。接下来的N行每行描述一个平台,包括三个整数,X1[i],X2[i]和H[i]。H[i]表示平台的高度,X1[i]和X2[i]表示平台左右端点的横坐标。1 = N = 1000,-20000 = X, X1[i], X2[i] = 20000,0 H[i] Y = 20000(i = 1..N)。所有坐标的单位都是米。 Jimmy的大小和平台的厚度均忽略不计。如果Jimmy恰好落在某个平台的边缘,被视为落在平台上。所有的平台均不重叠或相连。测试数据保Jimmy一定能安全到达地面。 输出要求 对输入的每组测试数据,输
您可能关注的文档
- 种子学chapter2.7 种子活力理论和测定方法和寿命.ppt
- 种子学chapter4.1-3 种子加工原理与技术.ppt
- 种子学chapter3 种子生产原理与技术.ppt
- 种子学chapter4.4-6 种子处理和包衣.ppt
- 种子学chapter5.1-2 商品种子和种质资源贮藏原理和技术.ppt
- 种子学chapter6.1-2 种子检验原理和技术.ppt
- 种子经营与管理-绪论 种子经营管理学 教学课件.ppt
- 种子学chapter6.7 种子生活力测定.ppt
- 科学信息检索课件 第二章 网络免费资源的检索与利用.ppt
- 科学整合资源 提高监测效能确保人民用药安全 江苏省药品不良反应监测中心.ppt
原创力文档

文档评论(0)