zoukankan      html  css  js  c++  java
  • 动态规划求最大子段和(改进)

    原创


    关于最大子段和之前写过一篇,今给过改进算法,思路还是不变,其实改得也不多。

    具体思路看:https://www.cnblogs.com/chiweiming/p/9502501.html

    这种改进就像0-1背包里面的滚动数组一样!

     1 // dp[i]存储以元素element[i]结尾的序列和中的最大值
     2 // dp[i]=max(dp[i-1]+element[i],element[i])
     3 import java.util.*;
     4 
     5 public class 算法分析与设计3_3 {
     6     
     7     static int longSum(int n,int element[]) {
     8         int dp=0;
     9         int max=0;
    10         for(int i=1;i<=n;i++) {
    11             if(dp>0) {
    12                 dp=dp+element[i];
    13             }else {
    14                 dp=element[i];
    15             }
    16             if(dp>max) {
    17                 max=dp;
    18             }
    19         }
    20         return max;
    21     }
    22     /*
    23     static int longSum(int element[],int start,int end,int dp[]) {    //返回最大子段和
    24         for(int i=start;i<=end;i++) {
    25             dp[i]=Math.max(dp[i-1]+element[i], element[i]);
    26         }
    27         int max=0;
    28         for(int i=start;i<=end;i++) {
    29             if(dp[i]>max) {
    30                 max=dp[i];
    31             }
    32         }
    33         return max;
    34     }
    35     */
    36     public static void main(String[] args) {
    37         Scanner reader=new Scanner(System.in);
    38         System.out.print("输入元素个数:");
    39         int n=reader.nextInt();
    40         System.out.print("输入"+n+"个元素:");
    41         int element[]=new int[n+1];
    42         for(int i=1;i<=n;i++) {
    43             element[i]=reader.nextInt();
    44         }
    45         /*
    46         int dp[]=new int[n+1];
    47         System.out.println(longSum(element,1,n,dp));
    48         */
    49         System.out.println(longSum(n,element));
    50     }
    51 
    52 }

    16:40:20

    2018-10-15

  • 相关阅读:
    python wsdl connection refused 111
    我要学算法
    linux 定时任务
    mysql语句
    Firefox配置Fiddler
    windows下安装spynner
    做一个完整的项目需要技能
    快速排序
    《实时控制软件设计》总结
    asp实现在微信jsdk分享从a页面跳转到b页面然后分享后点开又回a页面
  • 原文地址:https://www.cnblogs.com/chiweiming/p/9791841.html
Copyright © 2011-2022 走看看