t个样例
n n个数字
从 1->n 穿衣服 脱了就不能再用 ,可以套
问最少几件衣服
#include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std;
#define MAXN 110
#define inf 100000000 int dp[MAXN][MAXN];
int z[MAXN]; int main()
{
int t,ca;
scanf("%d",&t);
ca=; while(t--)
{
int n;
int i,j,k,l;
memset(dp,,sizeof(dp));
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d",&z[i]);
dp[i][i]=; //这个初始化肯定是对的 然后去取最小
} for(l=;l<=n;l++)
{
for(i=;i<=n-l+;i++)
{
j=i+l-;
dp[i][j]=inf;
if(z[i]==z[j])
dp[i][j]=min(dp[i][j-],dp[i+][j]);
for(k=i;k<j;k++)
if(z[i]==z[k])
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
printf("Case %d: %d\n",ca++,dp[][n]);
}
return ;
}