[DP] UVA437
来源:互联网 发布:拖动拼图验证码js插件 编辑:程序博客网 时间:2024/05/16 11:40
找到各个积木摞起来的最高高度
上面的积木长和宽严格小于下面的
同一个积木可以重复使用
好像一个积木用三次最多,网上也写的是三个放入vec,但没想为什么是那三个就六个都放进去了
依旧是代码一模一样系列
第一次用vector......用来存结构体很方便的样子
DP....感觉要总结一波,要不每次都没思路
先记一下LIS,每次都忘记hhh
int Longest_Increasing ( int num[], int n ) { int lis[ n ], i, j; for ( i = 0; i < n; i++ ) { lis[ i ] = 1; for ( j = 0; j < i; j++ ) if ( num[ i ] > num[ j ] && lis[ j ] + 1 > lis[ i ] ) lis[ i ] = lis[ j ] + 1; } int maxn = 0; for ( i = 0; i < n; i++ ) if ( maxn < lis[ i ] ) maxn = lis[ i ]; return maxn;}
UVA 437
#include <algorithm>#include <cstdio>#include <iostream>#include <vector>using namespace std;struct Node { int x, y, z; //长,宽,高 Node ( int a, int b, int c ) : x ( a ) , y ( b ) , z ( c ) {} bool operator< ( const Node &n ) { return ( x < n.x && y < n.y ) || ( x < n.y && y < n.x ); // vec[ j ] < vec [ i ] }};vector<Node> vec;int DP[ 300 ];bool cmp ( Node &a, Node &b ) { return ( a.x * a.y < b.x * b.y ); } //将所有节点从小到大排序int LIS ( int n ) { int mx = 0; //储存最大高度 for ( int i = 1; i <= 6 * n; i++ ) { DP[ i ] = vec[ i ].z; //初始化高度 for ( int j = 1; j <= i; j++ ) { if ( vec[ j ] < vec[ i ] ) DP[ i ] = max ( DP[ i ], DP[ j ] + vec[ i ].z ); // LIS方法找到最大高度 if ( DP[ i ] > mx ) mx = DP[ i ]; } } return mx;}int main () { int cnt = 1; int n; while ( cin >> n && n != 0 ) { vec.clear (); //*清空* for ( int i = 1; i <= n; i++ ) { int a, b, c; scanf ( "%d%d%d", &a, &b, &c ); vec.push_back ( Node ( a, b, c ) ); //六种情况放入vector vec.push_back ( Node ( a, c, b ) ); vec.push_back ( Node ( b, a, c ) ); vec.push_back ( Node ( b, c, a ) ); vec.push_back ( Node ( c, a, b ) ); vec.push_back ( Node ( c, b, a ) ); } sort ( vec.begin (), vec.end (), cmp ); printf ( "Case %d: maximum height = %d\n", cnt, LIS ( n ) ); cnt++; }}
阅读全文
0 0
- UVA437(DP)
- [DP] UVA437
- uva437
- UVa437
- uva437
- uva437
- UVA437
- UVA437
- UVa437
- uva437
- uva437 poj2241 The Tower of Babylon dp
- uva437 - The Tower of Babylon(DAG上的DP)
- UVa437、POJ2241--The Tower of Babylon(巴比伦塔) DP
- UVa437巴比伦塔(DAG上的DP·LIS)
- uva437 DAG
- 例题9-2 UVa437 The Tower of Babylon(DP:DAG中的最长路)
- uva437(经典DAG题目)
- uva437 动态规划
- LeetCode
- Activiti 工作流
- POJ1753 Flip Game(搜索,枚举,位运算压缩)
- 4sum
- elk
- [DP] UVA437
- fashion-mnist
- Java中的链表-----LinkedList<E>泛型类
- Magical Bridges UVALive
- Linux-centos下安装lvs+keepalived高可用
- APICloud框架——总结一下最近开发APP遇到的一些问题 (三)
- Spring AOP
- 身份证识别SDK-身份证识别api(移动端-服务器端)
- 每周LeetCode算法题(一):Longest Substring Without Repeating Characters