小明的喷漆计划

想了20min然后写了10min qwq 

直接把思考过程挂上来了,应该能看懂吧/wq

(删去了大部分错误的过程,然后才发现正确的就这么点/kk

然而又没能一次过。查了很久发现是第三层循环那里把 i 打成了 1 。果然又是低级错误呜呜呜

#include<bits/stdc++.h>
using namespace std;
int n,f[101][101];
char s[101];
int main()
{
    while(scanf("%s",s+1)!=EOF)
    {
        n=strlen(s+1);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                f[i][j]=2e9;
            }
        }
        for(int i=1;i<=n;i++) f[i][i]=1;//长度为1的区间值为1
        for(int l=2;l<=n;l++)
        {
            for(int i=1;i<=n-l+1;i++)
            {
                int j=i+l-1;
                for(int k=i;k<j;k++)//emmm就是这里第一次的时候打错了(
                {
                    f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
                }
                if(s[i]==s[j]) f[i][j]--;//如果两端是一样的那就可以少涂一次
            }
        }
        cout<<f[1][n]<<endl;
    }
    return 0;
}

 

posted @ 2020-12-11 20:43  樱雪喵  阅读(149)  评论(0编辑  收藏  举报