hdu 1069 Monkey and Banana (DP)
2012-10-15 13:08
489 查看
点击打开链接
1,输入箱子的种类数
2,输入各个箱子的长宽高;
求各个箱子放起来达到的最大高度,要求,下面的箱子的长和宽都比上面的要大!!
1,输入箱子的种类数
2,输入各个箱子的长宽高;
求各个箱子放起来达到的最大高度,要求,下面的箱子的长和宽都比上面的要大!!
#include"stdio.h" #include"stdlib.h" struct A { int x; int y; int h; }each[100]; int cmp(const void*a,const void*b) { struct A *c,*d; c=(struct A*)a; d=(struct A*)b; if(c->x!=d->x) return d->x-c->x; else return d->y-c->y; } int main() { int n; int i,l; int k; int x,y,z; int dp[100]; int max; int Case=1; while(scanf("%d",&n),n) { k=0; for(i=0;i<n;i++) { scanf("%d%d%d",&x,&y,&z); each[k].x=x>y?x:y; each[k].y=x>y?y:x; each[k].h=z; k++; each[k].x=x>z?x:z; each[k].y=x>z?z:x; each[k].h=y; k++; each[k].x=z>y?z:y; each[k].y=z>y?y:z; each[k].h=x; k++; } qsort(each,k,sizeof(each[0]),cmp); dp[0]=each[0].h; for(i=1;i<k;i++) { max=0; for(l=i-1;l>=0;l--) { if((each[l].y>each[i].y&&each[l].x>each[i].x)||(each[l].y>each[i].x&&each[l].x>each[i].y)) { if(dp[l]>max) max=dp[l]; } } dp[i]=max+each[i].h; } max=0; for(i=0;i<k;i++) { if(dp[i]>max) max=dp[i]; } printf("Case %d: maximum height = %d\n",Case,max); Case++; } return 0; }
相关文章推荐
- HDU 1069 Monkey and Banana 基础DP
- HDU 1069 Monkey and Banana(最大的单调递减序列啊 dp)
- hdu 1069 Monkey and Banana【普通dp】
- hdu 1069 Monkey and Banana(简单dp)
- HDU 1069 Monkey and Banana(最大的单调递减序列啊 dp)
- HDU1069 Monkey and Banana DP非连续单调递增序列的最大和的变种
- HDU:1069 Monkey and Banana(经典动态规划DP)
- HDU 1069 Monkey and Banana(基础dp)
- hdu 1069 Monkey and Banana(dp 最长上升子序列)
- hdu1069 Monkey and Banana dp
- hdu 1069 Monkey and Banana (DP)
- Hdu 1069 Monkey and Banana -- DP
- HDU 1069 Monkey and Banana(dp)
- DP-HDU-1069-Monkey and Banana
- HDU 1069 Monkey and Banana DP LIS
- HDU 1069 Monkey and Banana(DP)
- C - Monkey and Banana 【hdu 1069 dp】
- HDU1069 Monkey and Banana ——dp
- HDU 1069 Monkey and Banana DP LIS变形题
- hdu 1069 Monkey and Banana(dp)