| ||||||||||
| 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 | |||||||||
都可以吧,不是有spj吗!In Reply To:Re:喜欢动态规划的进来!! Posted by:tempfor at 2007-04-08 09:19:57 > 这题:
> 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