UVa 437 DAG 动态规划

#include <bits/stdc++.h>
using namespace std;
const int maxn = 35;
int d[maxn][5],c[maxn][5];
int n;

void get_dimensions(int v[],int b,int dim)
{
	int index=0;
	for(int i=0;i<3;i++)
		if(i!=dim) v[index++]=c[b][i];
}
int dp(int x,int y)
{
	int &ans = d[x][y];
	if(ans) return ans;
	int u[3],v[3];
	get_dimensions(u,x,y);
	for(int i=0;i<n;i++)
		for(int j=0;j<3;j++)
		{
			get_dimensions(v,i,j);
			if(u[0]>v[0]&&u[1]>v[1])	
				an***ax(dp(i,j),ans);
		}
	ans+=c[x][y];
	return ans;
}
int main()
{
	int kase=1;
	while(scanf("%d",&n)!=EOF)
	{
		if(n==0) return 0;
		int ans=0;
		memset(d,0,sizeof(d));
		for(int i=0;i<n;i++)
		{
			scanf("%d%d%d",&c[i][0],&c[i][1],&c[i][2]);
			sort(c[i],c[i]+3);
		}
		for(int i=0;i<n;i++)	
			for(int j=0;j<3;j++)
				an***ax(dp(i,j),ans);
		printf("Case %d: maximum height = %d\n",kase++,ans);
	}

	return 0;
}


全部评论

相关推荐

11-14 16:15
已编辑
湖南工业大学 Java
点赞 评论 收藏
分享
FFFoly:我也是,现在已经到了学长说的 能面试侃侃而谈的阶段了,但是已经没有公司给我面了
远程面试的尴尬瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务