曾经做的一道算法题,到目前为止,我觉得是最好的一道算法题了。
2012-08-22 15:17
176 查看
某学校进行打字比赛,比赛主要考查选手在规定时间内正确输入的字数。但问题是,如何确定每一个输入的字是否是正确的(即是否与原稿相同),因为完全存在选手错字、漏字和增字的情况,如:原稿为“abcde”,打字内容为“abece”.比较可靠的办法是计算打字内容与原稿的最大相似子序列的长度,所谓最大相似子序列即两者相等的子序列种最大的那个,如前面例子中两者最大相似子序列的长度为“abce”,长度为4,请设计程序计算两个字符串的最大相似子序列的长度!用java编写
这是题目,自己在论坛上找的。但是是看书后自己解决的。。嘿嘿
这是题目,自己在论坛上找的。但是是看书后自己解决的。。嘿嘿
int count = 0; String a ="interneabct"; String b ="returnabc"; char[] aa = a.toCharArray(); char[] bb = b.toCharArray(); int weizhi = 0; b: for (int i = 0; i < bb.length; i++) { for (int j = 0; j < aa.length; j++) { if (bb[i] == aa[j]) { weizhi = j; break b; } } } int[][] aaa = new int[aa.length + 1][bb.length + 1]; for (int i = 0; i < aa.length + 1; i++) { for (int j = 0; j < bb.length + 1; j++) { aaa[i][j] = 0; } } for (int j = 1; j < bb.length + 1; j++) { for (int i = 1; i < aa.length + 1; i++) { if (aa[i - 1] == bb[j - 1]) { if ((i - 1) >= weizhi) { aaa[i][j] = aaa[i - 1][j - 1] + 1; } } else { aaa[i][j] = Math.max(aaa[i - 1][j], aaa[i][j - 1]); } } } for (int j = 0; j < bb.length + 1; j++) { for (int i = 0; i < aa.length + 1; i++) { System.out.print(aaa[i][j]); } System.out.println(); } System.out.println(aaa[aa.length][bb.length]);
相关文章推荐
- 一道据说是世界上目前最好的智力题
- 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章
- 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章
- 目前为止最好的Delphi 8 for .Net书籍
- 个人觉得目前 最好用的Taobao API的NodeJS封装
- GrabCut in One Cut(基于图割算法grabcut的一次快速图像分割的OpenCV实现)----目前效果最好的图割
- 目前为止i9000导入联系人的最好最简单的方法
- 对C# 程序员来说现在是到目前为止最好的时代
- GrabCut in One Cut(基于图割算法grabcut的一次快速图像分割的OpenCV实现)----目前效果最好的图割
- 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章
- 面向对象和面向过程的区别个人觉得是目前解释最好的
- 对C# 程序员来说现在是到目前为止最好的时代
- 一道算法题(目前未解)
- 目前为止最好的关于const的解释
- 我认为目前为止最好的4款免费杀毒软件,请指教.
- MJ评《金刚狼》-9分(今年目前为止最好的科幻大片)
- GrabCut in One Cut(基于图割算法grabcut的一次快速图像分割的OpenCV实现)----目前效果最好的图割
- 目前为止最好的Delphi 8 for .Net书籍
- 对C# 程序员来说现在是到目前为止最好的时代
- ColorPix——到目前为止最好用的屏幕取色器