CodeChef submission 130857 (C) plaintext list. Status: WA, problem J2, contest NOV09. By rookie (rookie), 2009-11-11 13:20:17.
#include<stdio.h> #include<string.h> int L[1000][1000]; int L1[1000][1000]; int D[1000][1000]; int lcs_fun(char[],char[],int,int); int main() { char s[1002],t[1002]; int tc,index=0,m,n,i=0,j=0,l1=0,l2=0,x=0; while(index<tc) { m=strlen(s);n=strlen(t); for(i=0;i<m;i++) for(j=0;j<n;j++) { if(i==0 || j==0) L1[i][j]=0; else if(i>0 && j>0 && s[i]==t[j]) { L1[i][j]=L1[i-1][j-1]+1; } else { l1=L1[i-1][j]; l2=L1[i][j-1]; L1[i][j]=(l1>l2)?l1:l2; } //printf("%d ",l1); } //if(L[m-1][n-1]==0) //printf("%d ",(L1[m-1][n-1])); //else /* for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(i==0 || j==0) L1[i][j]=0; else L1[i][j]=-1; } } //printf("%d ",lcs_fun(s,t,m-1,n-1)); x=lcs_fun(s,t,m-1,n-1); if(x==0) printf("%d ",x); else printf("%d ",1+x); */ for(j=0;j<n;j++) for(i=0;i<m;i++) { if(i==0 || j==0) D[i][j]=1; else { D[i][j]=0; if(s[i]==t[j]) D[i][j]=D[i-1][j-1]; else { if(L[i-1][j]==L[i][j]) D[i][j]=D[i][j]+D[i-1][j]; if(L[i][j-1]==L[i][j]) D[i][j]=D[i][j]+D[i][j-1]; if(L[i-1][j-1]==L[i][j]) D[i][j]=D[i][j]-D[i-1][j-1]; } } } //printf("i=%d,i=%d,%d ",i,j,D[i-1][j-1]); /*for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%d ",L1[i][j]); printf("\n"); }*/ index++; } return 0; } /* int lcs_fun(char x[],char y[],int i,int j) { int l1,l2; if(L1[i][j]!=-1) return L1[i][j]; if(x[i]==y[j]) { L1[i][j]= (lcs_fun(x,y,i-1,j-1)+1); } else { l1=lcs_fun(x,y,i-1,j-1); l2=lcs_fun(x,y,i,j-1); l1=((l1>l2)?l1:l2); L1[i][j]=l1; //return (L1[i][j]); } return (L1[i][j]); } */
Comments

