CF607B的问题
  • 板块学术版
  • 楼主Collapsarr
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/6/26 22:13
  • 上次更新2023/11/3 12:21:26
查看原帖
CF607B的问题
716122
Collapsarr楼主2023/6/26 22:13

请大佬看看我的代码,92分AC不了。

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

int n;
int s[600],f[600][600];

int main()
{
    scanf("%d",&n);
    for(int i = 1;i<=n;i++)
    {
        scanf("%d",&s[i]);
    }
    for(int i = 1;i<=n;i++)
    {
        for(int j = 1;j<=n;j++)
        {
            f[i][j] = 0x3f3f3f3f;
        }
        f[i][i] = 1;
    }
    for(int i = 1;i<=n;i++)
    {
    	f[i][i+1] = 1 + (s[i]!=s[i+1]);
	}
    for(int len = 3;len<=n;len++)
    {
        for(int l = 1;l<=n;l++)
        {
            int r = l + len - 1;
            if(r>n)
            {
                break;
            }
            if(s[l]==s[r])
            {
                f[l][r] = f[l+1][r-1];
            }
            else
            {
                for(int k = l;k<r;k++)
                {
                    f[l][r] = min(f[l][r],f[l][k]+f[k+1][r]);
                }
            }
        }
    }
    printf("%d\n",f[1][n]);
}
2023/6/26 22:13
加载中...