zoukankan      html  css  js  c++  java
  • 最大子序和

    /*
    最大子序和。
    动态规划:
    1、状态定义
    2、状态初始化
    3、状态转移
    */
    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<iostream>
    int getMax(int a,int b){
        if(a>b)
            return a;
        return b;
    }
    int maxSubArray(int* nums, int numsSize){
        if(numsSize<=0)
            return 0;
        int dp[numsSize],rs,i;
        dp[0]=rs=nums[0];
        for(i=1;i<numsSize;i++){
            dp[i]=getMax(dp[i-1],0)+nums[i];
            rs=getMax(dp[i],rs);
        }
        return rs;
    }
    int maxSubArray1(int* nums, int numsSize){
        if(numsSize<=0)
            return 0;
        int rs,temp,i;
        rs=temp=nums[0];
        for(i=1;i<numsSize;i++){
            temp=getMax(temp,0)+nums[i];
            rs=getMax(temp,rs);
        }
        return rs;
    }
    int main()
    {
        int nums[]={-2,1,-3,4,-1,2,1,-5,4};
        int rs=maxSubArray1(nums,9);
        printf("%d
    ",rs);
        return 0;
    }
  • 相关阅读:
    STL与泛型编程-练习2-GeekBand
    HashSet
    JAVA集合
    分布式锁1 Java常用技术方案
    JAVA 锁
    JAVA多线程二
    JAVA多线程一
    Redis pipeline and list
    mongo 安装
    Intersection of Two Arrays
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/12667613.html
Copyright © 2011-2022 走看看