题目链接:http://vjudge.net/contest/141291#problem/D

题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问在满足题目要求的穿衣顺序下最少需要准备几件衣服。

思路:区间dp

//这个是看的别人的代码理解的,但是按照自己理解的写的代码样例正确,但是结果怎么都是WA的,不知道为什么,等我问问学长搞懂了再补题。//隔天改对了。

代码1:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
const int maxn=1e2+;
const int INF=0x3f3f3f3f; int dp[][];
int a[]; int main(){
int T;
scanf("%d",&T);
for(int t=; t<=T; t++){
int n;
scanf("%d",&n);
memset(dp,,sizeof(dp));
for(int i=; i<=n; i++){
scanf("%d",&a[i]);
dp[i][i]=;
}
for(int d=; d<n; d++) ///区间长度
for(int i=; i+d<=n; i++){
int j=i+d;
dp[i][j]=dp[i+][j]+;
for(int k=i+; k<=j; k++)
if(a[i]==a[k]) dp[i][j]=min(dp[i][j],dp[i+][k]+dp[k+][j]);
}
printf("Case %d: %d\n",t,dp[][n]);
}
return ;
}

代码2:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
const int maxn=1e2+;
const int INF=0x3f3f3f3f; int dp[][];
int a[]; int main(){
int T;
scanf("%d",&T);
for(int t=; t<=T; t++){
memset(dp,INF,sizeof(dp));
int n;
scanf("%d",&n);
for(int i=; i<=n; i++) {scanf("%d",&a[i]);dp[i][i]=;}
for(int d=; d<n; d++) ///区间长度
for(int i=; i+d<=n; i++){
int j=i+d;
if(a[i]==a[j]) dp[i][j]=dp[i][j-];
for(int k=i; k<j; k++)
if(a[i]==a[k]) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
printf("Case %d: %d\n",t,dp[][n]);
}
return ;
}

代码3:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
const int maxn=1e2+;
const int INF=0x3f3f3f3f; int dp[][];
int a[]; int main(){
int T;
scanf("%d",&T);
for(int t=; t<=T; t++){
memset(dp,INF,sizeof(dp));
int n;
scanf("%d",&n);
for(int i=; i<=n; i++) {scanf("%d",&a[i]);dp[i][i]=;}
for(int j=; j<=n; j++) ///区间 i是头,j是尾
for(int i=j-; i>=; i--){
if(a[i]==a[j])dp[i][j]=dp[i][j-];
for(int k=i; k<j; k++)
if(a[i]==a[k]) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
printf("Case %d: %d\n",t,dp[][n]);
}
return ;
}

最新文章

  1. JVM调优总结
  2. 虚拟机linux上网问题
  3. linux下用rpm包安装默认配置
  4. HTML 学习笔记 CSS样式(背景)
  5. I/O多路复用——select函数与poll函数
  6. weiphp---------图灵机器人存在的bug。
  7. [ThinkPHP]MVC模块和URL访问
  8. CSS3 skew倾斜、rotate旋转动画
  9. 转载自php 大牛的学习计划 人生规划
  10. 理解AngularJS中的依赖注入
  11. linux(ubuntu) 搭建java程序运行环境
  12. java.sql.SQLException之数组越界
  13. The content of elements must consist of well-formed character data or markup
  14. keras安装-【老鱼学keras】
  15. sed命令替换目录
  16. python 数据可视化 -- 真实数据的噪声平滑处理
  17. 记录mysql安装过程遇到问题
  18. list源码3(参考STL源码--侯捷):push_front、push_back、erase、pop_front、pop_back、clear、remove、unique
  19. php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)
  20. pycharm-2018.1.6永久激活(本人使用的是centos7)

热门文章

  1. DB2环境设置
  2. 【python】sql语句插入中内容同时包含单引号和双引号的解决办法
  3. 如何点击按钮后在加载外部的Js文件
  4. centOS填坑笔记(一)
  5. 多线程编程1 - NSThread
  6. Jams倒酒
  7. 字典树(codevs 4189)
  8. OkHttp学习总结
  9. JAVA作业02
  10. 18.中介者模式(Mediator Pattern)