POJ ACM 1458

来源:互联网 发布:php网站排版教程 编辑:程序博客网 时间:2024/05/29 04:52

最长公共子序列问题

两个字符串:str1,str2.

子问题:

str1的前i个字符串和str2的前j个字符串的最长公共子序列



代码:

#include <iostream>#include <string>using namespace std;int main(){string str1,str2;int len1,len2;int ** arr;while(cin>>str1>>str2){len1 = str1.length();len2 = str2.length();arr = new int*[len1+1];int i,j;for( i = 0; i < len1+1; i++)arr[i] = new int[len2+1];for( i = 0; i < len1+1; i++)for( j = 0; j <len2+1; j++)arr[i][j] = 0;int max = 0;for( i = 0; i < len1; i++){for( j = 0; j <len2; j++){if( str1[i] == str2[j] )arr[i+1][j+1] = arr[i][j]+1;else{arr[i+1][j] > arr[i][j+1] ? arr[i+1][j+1]=arr[i+1][j] : arr[i+1][j+1]=arr[i][j+1];}}}cout<<arr[len1][len2]<<endl;/*for( i = 0; i < len1+1; i++)delete arr[i];delete[] arr;*/}return 0;}


0 0
原创粉丝点击