博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 10051 Tower of Cubes(类似LIS)
阅读量:4639 次
发布时间:2019-06-09

本文共 1151 字,大约阅读时间需要 3 分钟。

题意:

一些重量递增而且各个面都有颜色的立方体,要将这些立方体堆成一个塔,要求两个接触面同色,而且下面的立方体更重。求塔的最大高度。

思路:

用求LIS的思想,无非是多了几个状态。dp[i][j]表示前i个箱子,并且第i个箱子朝上的颜色为j时,能达到的最高高度。

由于题目要输出路径,而时间已晚,就不想在这个点上面纠结了,剩下的都是体力活,冗余最小化,只求了个最大的高度。

#include 
#include
#include
#define max(a,b) (((a) > (b)) ? (a) : (b))int dp[505][105];int state[10];int main(){ int n; while (scanf("%d", &n) && n) { memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; ++i) { scanf("%d %d %d %d %d %d", &state[0], &state[5], &state[1], &state[4], &state[2], &state[3]); for (int j = 0; j < 6; ++j) { dp[i][state[j]] = 1; for (int k = 1; k < i; ++k) if (dp[k][state[5-j]]) dp[i][state[j]] = max(dp[i][state[j]], dp[k][state[5-j]] + 1); } } int ans = 0; for (int i = 1; i <= n; ++i) for (int j = 0; j < 6; ++j) if (ans < dp[i][state[j]]) ans = dp[i][state[j]]; printf("%d\n", ans); } return 0;}

 

 

转载于:https://www.cnblogs.com/kedebug/archive/2012/11/17/2774251.html

你可能感兴趣的文章
【BZOJ】4542: [Hnoi2016]大数
查看>>
通过注入DLL后使用热补丁钩取API
查看>>
欧拉筛(线性筛)
查看>>
C 语言指针怎么理解
查看>>
Go基础1
查看>>
删除数据库所有表数据
查看>>
kali下搭建WiFi钓鱼热点
查看>>
【Java】 剑指offer(32) 从上往下打印二叉树
查看>>
二十三、连接mysql数据库,创建用户模型
查看>>
leetcode--844:(队列类)比较含退格的字符串
查看>>
判断字符串是否全为空格和去掉字符串中的空格
查看>>
OO第一阶段纪实
查看>>
实验二
查看>>
ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架
查看>>
抄袭的用Jsp+JavaBean+Mysql实现的登录和注册
查看>>
jquery显示隐藏操作
查看>>
还是畅通工程(hdu1233)并查集应用
查看>>
导入.sql文件入数据库
查看>>
I/O模型
查看>>
EMQ --集成搭建
查看>>