算法面试题(二)-- 最长公共子序列(LCS)与苦恼的月下老人
2016-06-22 14:21
495 查看
这是一个典型的动态规划题,属于求两个字符串的最长公共子串问题,如果你手边有《算法导论》这本书,这个问题就可以在书中找到;
Code:
int LCS(const char *Male,const char *Female) { int N = (int)strlen(Male); int M = (int)strlen(Female); int pair[1001][1001];//配对结果矩阵 //初始化 for (int i = 0; i < N; i ++) { pair[i][0] = 0; } for (int i = 0; i < M; i ++) { pair[0][i] = 0; } for (int i = 1; i <= N; i ++) { for (int j = 1; j <= M; j ++) { if (Male[i-1] == Female[j-1]) pair[i][j] = pair[i-1][j-1] + 1; else { if (pair[i-1][j] > pair[i][j-1]) pair[i][j] = pair[i-1][j]; else pair[i][j]=pair[i][j-1]; } } } return pair [M]; }
int main() { const char Male[1001]; const char Female[1001]; scanf("%s\r\n%s",Male,Female); printf("%d",LCS(Male,Female)); return 0; }
result:
相关文章推荐
- 程序员必知的七个图形工具
- 混日子不是你的错,根源在这
- 程序员的精神家园——码农餐厅(一)
- 黑马程序员-(多线程)了解线程与如何解决线程同步到来的安全问题!(面试)
- 深入浅出经典面试题之——反转字符串
- 你离大神级程序员只差这几步
- android面试日记——20160620
- 《程序员面试宝典(第4版)》的笔记(作者: 欧立奇; 刘洋; 段韬)
- 面试题
- java面试题及答案
- 面试题(1)
- 程序员如何挽救一个失败的项目?
- 程序员技术练级攻略
- Android 面试题
- 程序员:混日子不是你的错,根源在这里
- 前端简单面试题
- Story share IBM 一同事职业发展履历
- LayoutInflater——80%的Android程序员对它并不了解甚至错误使用
- 程序员修炼之道阅读笔记02
- android面试日记--20160619