The following program is my ACcepted code for PKU OJ 1458 Common Subsequence
It's a for everybody to learn and discuss.
If there is any mistake or comment, please let me know. :D
此乃PKU 1458的AC code!
歡迎一同討論學習,如有錯誤與任何建議請留言 : )
點這裡看題目 Click here to see this Problem!
//This program is for PKU OJ 1458 Common Subsequence
//http://poj.org/problem?id=1458
/*
This progrom is just a LCS (Longest Common Subsequence) problem.
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>// for the std::max
using namespace std;
#define MAX 1025
char s1[MAX], s2[MAX];
int lcs[MAX][MAX];
void initial()
{
memset(s1, '\0', sizeof(s1));
memset(s2, '\0', sizeof(s2));
memset(lcs, 0, sizeof(lcs));
return;
}
int countLCS()
{
memset(lcs, 0, sizeof(lcs));
int len1, len2;
len1 = strlen(s1);
len2 = strlen(s2);
for(int i = 0; i< len2; i++)// for the s2
{
for(int j = 0; j< len1; j++)// for the s1
{
if(s1[j] == s2[i])
lcs[i + 1][j + 1] = lcs[i][j] + 1;
else
lcs[i + 1][j + 1] = max(lcs[i][j + 1], lcs[i + 1][j]);
}
}
return lcs[len2][len1];
}
int main()
{
initial();
while(scanf("%s %s", &s1, &s2)!=EOF)
{
printf("%d\n",countLCS());
}
return 0;
}
Please feel free to use it after adding this blog as an reference. (http://autekroy.blogspot.tw) If there is any mistake or comment, please let me know. :D
歡迎使用與分享任何內容,但請記得標示此部落格為出處。(http://autekroy.blogspot.tw/) 如果有發現任何的錯誤與建議請留言或跟我連絡。 : )
It's a for everybody to learn and discuss.
If there is any mistake or comment, please let me know. :D
此乃PKU 1458的AC code!
歡迎一同討論學習,如有錯誤與任何建議請留言 : )
點這裡看題目 Click here to see this Problem!
//This program is for PKU OJ 1458 Common Subsequence
//http://poj.org/problem?id=1458
/*
This progrom is just a LCS (Longest Common Subsequence) problem.
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>// for the std::max
using namespace std;
#define MAX 1025
char s1[MAX], s2[MAX];
int lcs[MAX][MAX];
void initial()
{
memset(s1, '\0', sizeof(s1));
memset(s2, '\0', sizeof(s2));
memset(lcs, 0, sizeof(lcs));
return;
}
int countLCS()
{
memset(lcs, 0, sizeof(lcs));
int len1, len2;
len1 = strlen(s1);
len2 = strlen(s2);
for(int i = 0; i< len2; i++)// for the s2
{
for(int j = 0; j< len1; j++)// for the s1
{
if(s1[j] == s2[i])
lcs[i + 1][j + 1] = lcs[i][j] + 1;
else
lcs[i + 1][j + 1] = max(lcs[i][j + 1], lcs[i + 1][j]);
}
}
return lcs[len2][len1];
}
int main()
{
initial();
while(scanf("%s %s", &s1, &s2)!=EOF)
{
printf("%d\n",countLCS());
}
return 0;
}
Please feel free to use it after adding this blog as an reference. (http://autekroy.blogspot.tw) If there is any mistake or comment, please let me know. :D
歡迎使用與分享任何內容,但請記得標示此部落格為出處。(http://autekroy.blogspot.tw/) 如果有發現任何的錯誤與建議請留言或跟我連絡。 : )
沒有留言:
張貼留言
請留下您的任何想法或建議!
Please leave any thought or comment!