zoukankan      html  css  js  c++  java
  • hdu1024Max Sum Plus Plus

    学习网上某位朋友的做法。
    基本思想:b(ij) = Max{ b(i, j-1) + e[j],  Max{ b(i-1, t) } + e[j] } (i <= t < j)
    再做优化:存放在两个一维数组中:
    #include<stdio.h>
    #include<stdlib.h>
     
    int maxsum(int e[], int n, int m)
    {
           int *curr_best;
           int *prev_best;
           int max_sum, i, j;
     
           curr_best = (int*)malloc(sizeof(int) * (n + 1));/分配,不初始化
           prev_best = (int*)calloc(n + 1, sizeof(int));//分配,且每个元素初始化为0
     
           *curr_best = 0;
           e--;
     
           for(i = 1; i <= m; ++i)
           {
                  max_sum = -2147483648;
                  for(j = i; j <= n; ++j)
                  {
                         if(curr_best[j - 1] < prev_best[j - 1])//prev_best中存放的是i-1阶段的最大值
                                curr_best[j] = prev_best[j - 1] + e[j];
                         else
                                curr_best[j] = curr_best[j - 1] + e[j];
                         prev_best[j - 1] = max_sum;
                         if(max_sum < curr_best[j])
                                max_sum = curr_best[j];//prev_best中存放i阶段的最大值
                  }
                  prev_best[j - 1] = max_sum;//对第n个数赋值
           }
     
           free(prev_best);
           free(curr_best);
     
           return max_sum;
    }
    int main()
    {
     int i,n,m;
     int *data;
     while(scanf("%d %d",&m,&n)==2&&n>0&&m>0)
     {
      data=(int *)malloc(sizeof(int)*n);
      for(i=0;i<n;i++)
       scanf("%d",&data[i]);
      printf("%d\n",maxsum(data,n,m));
      free(data);
     }
     return 0;
    }
     
    学会的是0x80000000表示的数为最小负整数,等于-2147483648
    malloc与calloc的用法与区别。
    错了很多次,还是错,现在不想再做这题了。。(上面程序是对的)。
    以后什么时候翻起来的时候再做吧。
  • 相关阅读:
    Entity Framework 批量操作
    Tsak多线程学习记录
    .net webservice 动态更换地址
    .NET EF Core2.0 (DBFirst)使用与配置
    MVC发布IIS后提示未配置默认文档
    未能加载文件或程序集“Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
    Redis教程
    使用git将项目上传到github
    Redis集群(一)搭建Cluster模式[超简单]
    Redis 常见5大数据类型结构,附录3个数据类型
  • 原文地址:https://www.cnblogs.com/pandy/p/1329524.html
Copyright © 2011-2022 走看看