• hdu 1069 Monkey and Banana 动态规划(最长递增子序列变形)


    http://acm.hdu.edu.cn/showproblem.php?pid=1069

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct abc{
    int
    x,y,z;
    }
    abc;
    abc  a[100];//定义结构体,里边分别存,长宽高;
    int k;
    int
    cmp( const void *a,const void *b)
    {

    abc *c,*d;
    c=(abc *)a;
    d=(abc *)b;
    if
    (c->x!=d->x)
      return
    c->x-d->x;
    else
      return
    c->y-d->y;//对结构体数组进行预处理:即将长进行从小到大的排序;
                             // 这样可以将问题转换为简单的DP问题;
    }
    int
    dp()//类似于求最长上升子序列的问题;
    {
    int
    ans,i,j;
    for
    (i=1;i<k;i++)
    {

      ans=0;//初始化a[i]前满足条件的最大值;
      for(j=0;j<i;j++)//进行双重循环,当存在a[i]时,求a[i]及a[i]之前的满足条件的高度和的最大值,把它置为a[i].z;
      {
       if
    (a[j].x<a[i].x&&a[i].y>a[j].y&&a[j].z>ans)
       {

        ans=a[j].z;
       }
      }

       a[i].z=ans+a[j].z;
     
    }

    ans=a[0].z;
    for
    (i=1;i<k;i++)
      if
    (a[i].z>ans)
       ans=a[i].z;
      return
    ans;




    }

    int
    main()
    {

    int
    n,i,m=1,t,ans;
    while
    (scanf("%d",&n),n!=0)
    {

       k=0;
      for
    (i=0;i<n;i++)
      {


       scanf("%d %d %d",&a[k].x,&a[k].y,&a[k].z);
       if
    (a[k].x!=a[k].z)//像8,9,10这块砖其实可以转换为9,8.10和9,10,8,这三款砖;但
       {     //5,5,5就只能是这一块砖,所以就看知否有相同长。宽;
        k++;
        a[k].x=a[k-1].z;
        a[k].y=a[k-1].y;
        a[k].z=a[k-1].x;
       }

       if
    (a[k].y!=a[k].z)
       {

        k++;

        a[k].x=a[k-1].x;
        a[k].y=a[k-1].z;
        a[k].z=a[k-1].y;
       }

       k++;
      }

     
      for
    (i=0;i<k;i++)
      {

       if
    (a[i].x>a[i].y)
       {

        t=a[i].x;
        a[i].x=a[i].y;
        a[i].y=t;
       }
      }

      qsort(a,k,sizeof(a[0]),cmp);
      ans=dp();
      printf("Case %d: maximum height = %d\n",m,ans);
     
      m++;
    }

    return
    0;
    }


  • 相关阅读:
    初步了解Ajax
    什么是applet
    FilterLog代码分析
    Async分析
    HttpServletRequest hrequest
    xml的定义用途
    企业级与应用级的区别
    未来规划
    黄金点游戏
    hashCode与eqauls
  • 原文地址:https://www.cnblogs.com/assult/p/3052099.html
Copyright © 2020-2023  润新知