zoukankan      html  css  js  c++  java
  • ZOJ1093 Monkey and Banana 【DP】

    一、题目

    ZOJ 1093

    二、题目源程序

    #include <stdio.h>//一个箱子有3种h..所以总共有3*n种高度.按面积从大到小排序
    #include <stdlib.h>
    struct block
    {
     int x,y,z,h;
    }a[200];
    int cmp(const void *a,const void *b)//快排,模版
    {
     return ((struct block *)b)->x*((struct block *)b)->y - ((struct block *)a)->x*((struct block *)a)->y;
    }
    int main()
    {
        int b,c,d;
         int n,max,maxmax,k=0;
         int i,j;
         while(scanf("%d",&n)!=EOF && n)
         {
              k++;
              j=0;
             for(i=0;i<n;i++)
             {
                scanf("%d%d%d",&d,&b,&c);//用d,b,c防止后面把前面覆盖。
                a[j].x=d;a[j].y=b;a[j++].z=c;
                a[j].x=d;a[j].y=c;a[j++].z=b;
                a[j].x=b;a[j].y=d;a[j++].z=c;
                a[j].x=b;a[j].y=c;a[j++].z=d;
                a[j].x=c;a[j].y=b;a[j++].z=d;
                a[j].x=c;a[j].y=d;a[j++].z=b;
              }
             qsort(a,6*n,sizeof(a[0]),cmp);
             for(i=0;i<n;i++)
             a[i].h=a[i].z;
             maxmax=a[0].h;
             for(i=0;i<6*n;i++)
             {
                 max=a[i].z;
                 for(j=0;j<i;j++)
                 {
                    if(a[i].x<a[j].x&&a[i].y<a[j].y)
                      {
                         if(a[i].z+a[j].h>max)//不重复加
                            max=a[i].z+a[j].h;
                      }
                  }
                  a[i].h=max;
                  if(a[i].h>maxmax)
                  maxmax=a[i].h;
              }
              printf("Case %d: maximum height = %d
    ",k,maxmax);
         }
         return 0;
    }

    三、解题思路

    1. 结构体利用   qsort()   函数排序。

    2. 简单的动态规划问题。

    四、心得体会

    虽然这道题属于动态规划里的超基础水题,可是这是我做的第一道DP题目,花费了很长时间,都没有做出来。

    最后看了大神的博客,才终于把它AC掉。

    DP是很重要、占很大比重的一部分,一定要多做题!!

  • 相关阅读:
    推荐影视
    《算法设计》一、引言:某些典型的问题
    使用google地图API
    Python导入不同文件夹下模块
    Pycharm之远程编程
    linux之scp
    Photoshop脚本之jpg转换成eps
    win7重新安装win7
    查看修改swap空间大小
    用 EasyBCD 在 Win7/8 中硬盘安装 Ubuntu
  • 原文地址:https://www.cnblogs.com/fightfor/p/3863342.html
Copyright © 2011-2022 走看看