uva437The Tower of Babylon

题意:给定n个长方体,叠加长方体,规则是上面的长方体长和宽都要小于下面的长方体。每种长方体有无数个,问叠加最高为多少。

分析:dp,递归搜索最大高度。‘

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define REP(i,n) for(int i=0;i 0)return ans;ans = 0;int l1[2], l2[2],len=0;REP(l, 3)if (l != j)l1[len++] = v[i][l];REP(a,n)REP(b, 3) {len = 0;REP(l, 3)if (l != b)l2[len++] = v[a][l];if (l2[0] < l1[0] && l2[1] < l1[1])ans = max(ans, dp(a, b));}ans += v[i][j];return ans;
}
int main()
{int kase = 0;while (cin >> n && n) {REP(i,n){REP(j,3)cin >> v[i][j];sort(v[i], v[i] + 3);}memset(d, 0, sizeof(d));int ans = 0;REP(i,n)//枚举第一层长方体{ REP(j, 3) {ans = max(ans, dp(i, j));}}cout << "Case " << ++kase << ": maximum height = " << ans << endl;}return 0;
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部