zoukankan      html  css  js  c++  java
  • 暑假集训(5)第一弹——— Super Jumping! Jumping! Jumping!(hdu1087)

    题意概括:在上次与娑殚的三次博弈中,你们都取得了胜利。便向娑殚提出要求,借助他的力量,传送到一个安全的地方。

    你们的愿望达成了,不过,你和小A似乎失散了。

    街上人来人往的特别热闹,每一个人的脸上都洋溢着幸福.“咕咕......"额,掏了掏身上的口袋,除你之外。

    “听说了嘛,德源街哪有个脑力比赛,据说优胜者可以去”吃到饱“饭店吃到饱,而且前三名还会有神秘奖品......"

    这次,为了填饱......嗯,为了生存,你决定参加这个比赛,比赛要求你得到在给定的数字中得到最大循序上升序列和。

    问题分析:求得是最大递增子序列和,用递推法,首先i 需要逆序排列,先算出后面的,然后逐步递推。

    方程为 打dp[i] = max(dp[i],m[i]+dp[j]);

     1 #include "cstdio"
     2 int m[1000];
     3 int dp[1000];
     4 void mbegin(int n)
     5 {
     6     for (int i=0;i<n;i++)
     7     {
     8         scanf ("%d",&m[i]);
     9         dp[i] = m[i];
    10     }
    11 }
    12 int max(int x,int y)
    13 {
    14     return x>y?x:y;
    15 }
    16 int main()
    17 {
    18     int n;
    19     __int64 sum;
    20     while (scanf ("%d",&n) && n)
    21     {
    22         mbegin(n);
    23         for (int i=n-1;i>=0;i--)
    24          for (int j=i;j<n;j++)
    25          {
    26             if (m[i] < m[j])
    27                dp[i] = max (dp[i],m[i]+dp[j]);
    28          }
    29         sum = dp[0];
    30         for (int i=0;i<n;i++)
    31         {
    32            if (sum < dp[i])
    33                 sum = dp[i];
    34         }
    35         printf ("%I64d
    ",sum);
    36     }
    37 
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    MES取所有部门的函数实例
    MES总结:CBF.Common 文件Net下的有类型转换
    LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
    c# abstract抽象类与继承类子类的构造函数_base
    C# 之泛型详解
    MVC6与Asp.net5
    MenuStrip菜单递归
    .net 下的MVCPager
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/huas-zlw/p/5754387.html
Copyright © 2011-2022 走看看