Moderator: Board moderators
#include <stdio.h>
#include <string.h>
#define LEN 100
int m,n,i,j;
char c[LEN][LEN],b[LEN][LEN];
int ans;
char X[LEN],Y[LEN];
int LCS_length(){
m=strlen(X);
n=strlen(Y);
for(i=1;i<=m;i++) c[i][0]=0;
for(j=0;j<=n;j++) c[0][j]=0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++) {
if(X[i]==Y[j]) {
c[i][j]=c[i-1][j-1]+1;
b[i][j]= 1;
}
else if(c[i-1][j]>=c[i][j-1]) {
c[i][j] = c[i-1][j];
b[i][j]=2;
}
else{
c[i][j]=c[i][j-1];
b[i][j]=3;
}
}
return c[m][n];
}
void main(){
while(1) {
gets(X);
if (feof(stdin)) break;
gets(Y);
ans = LCS_length();
printf("%d\n",ans);
}
}

#include <stdio.h>
#include <string.h>
void main(void)
{
char str1[1010], str2[1010];
int len1, len2;
int i, j;
char map[1010][1010];
while ( 1 )
{
if ( gets(str1) == NULL )
break;
if ( gets(str2) == NULL )
break;
len1 = strlen(str1);
len2 = strlen(str2);
for ( i = 0 ; i <= len1 ; i++ )
map[i][0] = 0;
for ( i = 0 ; i <= len2 ; i++ )
map[0][i] = 0;
for ( i = 1 ; i <= len1 ; i++ )
for ( j = 1 ; j <= len2 ; j++ )
if ( str1[i-1] == str2[j-1] )
{
map[i][j] = map[i-1][j-1] + 1;
}
else if ( map[i-1][j] >= map[i][j-1] )
{
map[i][j] = map[i-1][j];
}
else
{
map[i][j] = map[i][j-1];
}
printf("%d\n", map[len1][len2]);
}
}

#include <stdio.h>
#include <string.h>
const int MAX = 1005;
char x[MAX]={'a'}, y[MAX]={'a'};
int c[MAX][MAX];
void LCS_Length(){
int m = strlen(x)-1, n = strlen(y)-1, i,j;
for(i = 1; i<=m; i++) c[i][0] = 0;
for(j = 0; j<=n; j++) c[0][j] = 0;
for(i = 1; i<=m; i++){
for(j = 1; j<=n; j++){
if( x[i] == y[j] ){
c[i][j] = c[i-1][j-1] + 1;
}
else if( c[i-1][j] >= c[i][j-1] ){
c[i][j] = c[i-1][j];
}
else
c[i][j] = c[i][j-1];
}
}
printf("%d\n", c[m][n]);
}
void main(void){
//freopen("f:\\10405.txt","rb",stdin);
while( gets(x+1)&& gets(y+1) ){
LCS_Length();
}
}
Darken wrote:
- Code: Select all
for(i=1;i<m+1;i++){
c[i][0]=0;
b[i][0]=' ';
}
for(j=0;j<m+1;j++){
c[0][j]=0;
b[0][j]=' ';
}

Users browsing this forum: Exabot [Bot] and 1 guest