贪心地选取两个后缀,然后往前补全,贪心地补全前k个不同的字符
我写了个沙茶dp,结果T掉了,明明都是n3的。。。
#include<iostream> #include<stdio.h> using namespace std; char s[1010],t[1010]; int main() { int n,k,ans=0; scanf("%d%d%s%s",&n,&k,s+1,t+1); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { int x=i,y=j,K=0; while(x>=1&&y>=1&&K<=k) { if(s[x]!=t[y]&&K==k)break; if(s[x]!=t[y]&&K<k)K++; x--;y--; } ans=max(ans,j-y); } cout<<ans<<endl; return 0; }
时间: 2024-11-02 23:53:49