zoukankan      html  css  js  c++  java
  • Halloween Costumes LightOJ

    //dp[i][i]=1。也就是说每个舞会换件衣服
    //对于dp[i][j]:
    //1.如果cos[i]=cos[j],dp[i][j]=dp[i][j-1],很明显i的衣服穿在最底,在j的时候就能拿出来再用
    //之后枚举中间点k,注意(i<=k<j)。
    //如果cos[i]=cos[k],那么k的衣服就是i的衣服了,那么dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])
    // 注意这里是dp[i][k],而不是dp[i][k-1],因为在此之前,对于i和k,已经进行过上面的1
    //那么 dp[i][k] 就已经是当前最优状况 
    #include<iostream>
    #include<cstdio> 
    #include<cstring>
    using namespace std;
    #define maxn 105
    #define inf 0x3f3f3f3f
    int a[105],dp[105][105];
    int main() {
    	int T,n,no=0;
    	scanf("%d",&T);
    	while(T--) {
    		scanf("%d",&n);
    		for(int i=1; i<=n; i++) 
    			scanf("%d",&a[i]);
    		for(int i=1; i<=n; i++) 
    			dp[i][i]=1;
    		for(int p=1; p<=n; p++) {
    			for(int i=1; i<=n; i++) {
    				int j=i+p;
    				dp[i][j]=inf;
    				if(a[i]==a[j]) 
    					dp[i][j]=dp[i][j-1];
    				for(int k=i; k<j; k++)
    					if(a[i]==a[k]) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]);
    			}
    		}
    		printf("Case %d: %d
    ",++no,dp[1][n]);
    		memset(dp,0,sizeof(dp));
    	}
    }
    
  • 相关阅读:
    powershell和cmd区别
    装饰器笔记
    url参数和字典的相互转化
    Python装饰器详解
    python字符串格式化f-string
    Python函数(function)与方法(method)区别
    jenkins钉钉插件报错keywords not in content
    jenkins配置邮件
    vim常用操作
    Vue之axios请求
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12466773.html
Copyright © 2011-2022 走看看