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 |
Re:喜欢动态规划的进来!!In Reply To:Re:喜欢动态规划的进来!! Posted by:tempfor at 2007-04-08 09:18:15 这题: a b a # a a b # 是输出a a,还是a b,那位大牛看看!! 为什么我的程序一直wrong #include<iostream> #include<string> #include<map> using namespace std; string s1[101],s2[101]; int f[101][101]; int la,lb,lc; inline int max(int a,int b) { return a>b?a:b; } void find(int k,int i,int j) { if(k==0) { return; } if(f[i][j]==f[i-1][j-1]+1) { find(k-1,i-1,j-1); if(k!=lc) { cout<<s1[i]<<' '; } else { cout<<s1[i]<<endl; } } else if(f[i][j]==f[i][j-1]) { find(k,i,j-1); } else { find(k,i-1,j); } } void DP() { int i,j; memset(f,0,sizeof(f)); for(i=1;i<=la;i++) { for(j=1;j<=lb;j++) { if(s1[i]==s2[j]) { f[i][j]=f[i-1][j-1]+1; } else { f[i][j]=max(f[i-1][j],f[i][j-1]); } } } lc=f[la][lb]; if(lc==0) { cout<<endl; return; } find(lc,la,lb); } int main() { string temp; int i=1,j; while(cin>>s1[i++]) { if(s1[i-1]=="#") { la=i-2; i=1; j=1; while(cin>>s2[j++]) { if(s2[j-1]=="#") { lb=j-2; DP(); break; } } } } return 1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator