ブルーブリッジカップ全国大会準備DAY6

パスワードドロップ:(間隔dpソリューション)
質問リンク

#include<iostream>
#include<string>

const int N=1000+10;

using namespace std;

string s;
int f[N][N];
int n;


int main(){
    
    
    cin>>s;
    n=s.size();
    for(int len=1;len<=n;len++){
    
    
        for(int i=0;i-1+len<=n;i++){
    
    
            int j=i-1+len;
            if(len==1){
    
    
                f[i][j]=1;
            }else{
    
    
                f[i][j]=max(f[i][j-1],f[i+1][j]);
                if(s[i]==s[j]){
    
    
                    f[i][j]=max(f[i][j],f[i+1][j-1]+2);
                }
            }
        }            
        
    }
    cout<<n-f[0][n-1]<<endl;
    return 0;
}

おすすめ

転載: blog.csdn.net/BOWWOB/article/details/109395633