Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
不知道怎么回事儿在HOJ就是A不掉,,在POJac了在HOJ是WA。。。In Reply To:DP问题,只是输出有点问题。。。,终AC,代码如下 Posted by:cike123 at 2010-09-04 00:46:20 #include <iostream> #include <cstdio> #include <cstring> using namespace std; char map1[102][40],map2[102][40]; int dp[102][102]; struct node{ char s[40]; int i,j; }DP[102][102]; void print(int i,int j){ if(DP[i][j].s[0]=='#')return; if(DP[i][j].s[0]=='$'){ print(DP[i][j].i,DP[i][j].j); } else{ print(DP[i][j].i,DP[i][j].j); printf("%s ",DP[i][j].s); } } int main() { int c1=1; int c2=1; while(scanf("%s",map1[c1])!=EOF){ c1++; while(scanf("%s",map1[c1]),map1[c1][0]!='#')c1++; while(scanf("%s",map2[c2]),map2[c2][0]!='#')c2++; c1--; c2--; for(int i=0;i<102;i++){ for(int j=0;j<102;j++)DP[i][j].s[0]='#'; } for(int i=0;i<=c1;i++)dp[i][0]=0; for(int i=0;i<=c2;i++)dp[0][i]=0; for(int i=1;i<=c1;i++){ for(int j=1;j<=c2;j++){ if(strcmp(map1[i],map2[j])==0){ dp[i][j]=dp[i-1][j-1]+1; DP[i][j].i=i-1; DP[i][j].j=j-1; strcpy(DP[i][j].s,map1[i]); }else{ if(dp[i-1][j]>dp[i][j-1]){ dp[i][j]=dp[i-1][j]; DP[i][j].s[0]='$'; DP[i][j].i=i-1; DP[i][j].j=j; } else{ dp[i][j]=dp[i][j-1]; DP[i][j].s[0]='$'; DP[i][j].i=i; DP[i][j].j=j-1; } } } } /*for(int i=1;i<=c1;i++){ for(int j=1;j<=c2;j++)printf("%s ",DP[i][j].s); printf("\n"); }*/ print(c1,c2); printf("\n\n"); c1=1; c2=1; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator