2 条题解

  • 0
    @ 2025-8-6 11:18:23
    #include<bits/stdc++.h>
    using namespace std;
    int dp[105][105],a[105],T,n;
    int main(){
        cin>>T;
        for(int ncase=1;ncase<=T;ncase++) {
            cin>>n;
            for(int i=1;i<=n;i++){
                cin>>a[i];
            }
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++){
                dp[i][i]=1;
            }
            for(int len=2;len<=n;len++){
                for (int i=1;i+len-1<=n;i++) {
                    int j=i+len-1;
                    dp[i][j]=dp[i][j-1]+1;
                    for(int k=i;k<j;k++) {
                        if(a[k]==a[j]){
                            dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1]);
                        }
                    }
                }
            }
            cout<<"Case "<<ncase<<": "<<dp[1][n]<<endl;
        }
        return 0;
    }
    

    信息

    ID
    2799
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    87
    已通过
    18
    上传者