zoukankan      html  css  js  c++  java
  • hdu 1069 Monkey and Banana (DP)

    点击打开链接

    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;
    }


  • 相关阅读:
    Pandas to_sql将DataFrame保存的数据库中
    Pandas 的groupby操作
    Hibernate(一)
    EasyUI
    Java面试题
    Solr
    Lucene
    SpringMVC(二)
    MyBatis(二)
    MyBatis(一)
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365194.html
Copyright © 2011-2022 走看看