悬关,90分求调,WA了第3个测试点
查看原帖
悬关,90分求调,WA了第3个测试点
1533737
null___楼主2025/7/23 15:05

或者给个简短易调的hack数据也行啊,想不明白哪错了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int f[55][55];
string s;

int dfs(int l,int r){
    if(f[l][r]!=-1)return f[l][r];
    char ch=s[r+1];
    if(l>r)return f[l][r]=0;
    if(l==r)return f[l][r]=s[l]==ch?0:1;
    vector<int> pos;
    pos.push_back(l-1);
    for(int i=l;i<=r;i++){
        if(s[i]==ch)pos.push_back(i);
    }
    pos.push_back(r+1);
    int tep=0x3f3f3f3f;
    if(pos.size()!=2){
        tep=0;
        for(int i=1;i<pos.size();i++){
            tep+=dfs(pos[i-1]+1,pos[i]-1);
        }
    }
    f[l][r]=0x3f3f3f3f;
    for(int i=l;i<=r;i++){
        if(s[i]==s[l]){
            f[l][r]=min(f[l][r],dfs(l+1,i-1)+1+dfs(i+1,r));
        }
    }
    f[l][r]=min(f[l][r],tep);
    return f[l][r];
}


signed main(){
    cin>>s;
    int n=s.length();
    s='*'+s+'*';
    for(int i=1;i<=n;i++)
       for(int j=1;j<=n;j++)
           f[i][j]=-1;
    cout<<dfs(1,n);
}
2025/7/23 15:05
加载中...