最长公共子序列(已解决)

#include<bits/stdc++.h>
using namespace std;
long long f[1005][1005];
int main(){
	string a,b;
    cin>>a>>b;
    for(int i=1;i<=a.size();i++){
        for(int j=1;j<=b.size();j++){
            if(a[i]!=b[j])f[i][j]=max(f[i-1][j],f[i][j-1]);
            else f[i][j]=f[i-1][j-1]+1;
        }
    }
    cout<<f[a.size()-1][b.size()-1];
}

80分WA

1 个赞

string 的下标是从 0 开始的

循环那里稍微改一下

#include<bits/stdc++.h>
using namespace std;
long long f[1005][1005];
int main(){
	string a,b;
    cin>>a>>b;
    for(int i=0;i<a.size();i++){
        for(int j=0;j<b.size();j++){
            if(a[i]!=b[j])f[i][j]=max(f[i-1][j],f[i][j-1]);
            else f[i][j]=f[i-1][j-1]+1;
        }
    }
    cout<<f[a.size()-1][b.size()-1];
}

WA10分

1 个赞

我自己调AC了

1 个赞

6我刚帮你调AC然后你自己就AC了。。。

我的水题解决方案啊!

1 个赞