Halloween Costumes 玄学题
2024-10-09 02:49:14
太难了,完全不懂
设\(dp[i][j]\)为第i天到第j天的最少代价
\(dp[i][j]=dp[i][j-1]+1\)(第j天多穿一件衣服)
\(dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1])\);(往前找一天k与j衣服相同,把中间的衣服都脱掉)
#include <bits/stdc++.h>
using namespace std;
int n,m,dp[209][209],a[209];
int main()
{
int t,o=1;
cin>>t;
while(t--)
{
cin>>n;
// memset(dp,20,sizeof(dp));
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
dp[i][j]=j-i+1;
for(int l=2;l<=n;l++)
{
for(int i=1;i+l-1<=n;i++)
{
int j=i+l-1;
dp[i][j]=dp[i][j-1]+1;//第j天穿衣服
//假如第j天不穿,那么要找一个K与第j天的衣服相同
//然后把k+1到j-1的衣服全部脱掉
for(int k=i;k<j;k++)
if(a[k]==a[j])
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1]);
}
}
cout<<"Case "<<o++<<": ";
cout<<dp[1][n]<<endl;
}
}
最新文章
- C - 搜索
- 开始研究tigase和android客户端的实现
- Spring利器之包扫描器
- Hive2 jdbc test
- MasterPage 变化了的 ClientID ctl00_
- Android中Listview实现分页加载效果OnScrollListener
- 如何让python程序运行得更快
- static int和static final int的区别
- Quartz中时间表达式的设置-----corn表达式
- 第11章:DOM扩展
- DB2中coalesce函数的应用
- 数据库DBUtils基本使用
- Cucumber 相关资源
- SpringCloud-sleuth-zipkin链路追踪
- 唯一索引的一种使用情景【有则U无则I】
- JS应用实例4:表格隔行换色
- python中的extend
- 在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
- C#动态加载/卸载Assembly的解决方案
- 切换nPar或vPar的启动模式