a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

求子數(shù)組最大和的實(shí)例代碼

2020-01-26 16:20:08
字體:
供稿:網(wǎng)友

題目:
輸入一個整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。
數(shù)組中連續(xù)的一個或多個整數(shù)組成一個子數(shù)組,每個子數(shù)組都有一個和。
求所有子數(shù)組的和的最大值。要求時間復(fù)雜度為O(n)。

例如輸入的數(shù)組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數(shù)組為3, 10, -4, 7, 2,
因此輸出為該子數(shù)組的和18。

找到狀態(tài)轉(zhuǎn)移方程,dp[i]表示前i個數(shù)中,包含i的子數(shù)組的最大和。要么第i個數(shù)自己最大,要么他要和包含i-1的子數(shù)組最大和(即dp[i-1])聯(lián)合在一起.
即dp[i] = max{arr[i],dp[i-1]+arr[i]};

代碼如下;

復(fù)制代碼 代碼如下:

#include <stdio.h>
#define max(a,b) (a)>(b)?(a):(b)

int res(int* arr, int len){
    //學(xué)到一個定義最小數(shù)的方法:)
    int max = -(1<<31);
    int i;
    for(i=1;i<len;i++){
        arr[i] = max(arr[i],arr[i-1]+arr[i]);
        if(max < arr[i]) max = arr[i];
    }
    return max;
}

int main(){
    int arr[] = {1,-2,3,10,-4,7,2,-5};
    printf("%d/n",res(arr,8));
    return 0;
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 欧美在线免费视频 | 婷婷在线视频 | 亚洲永久 | 精品三区在线观看 | 一区二区三区在线免费看 | 中文字字幕在线观看 | 国产极品免费 | 久久久久久久成人 | 日本在线精品视频 | 日韩精品在线免费 | 国产精品视频免费 | 国产婷婷色一区二区三区 | 久久99国产精一区二区三区 | 国产成人精品一区二区三区视频 | 91传媒在线播放 | 亚洲日韩中文字幕一区 | 巨大黑人极品videos精品 | 欧美成人一区二区三区片免费 | 久久国产香蕉视频 | 成人午夜sm精品久久久久久久 | 国产乱肥老妇国产一区二 | 欧美一区视频在线 | 国产精品久久久久久久久久妞妞 | 久草视频首页 | 亚洲午夜精品 | 成人av影院| 亚洲成人另类 | 黄色网址免费在线观看 | 欧美国产日韩在线观看 | 97国产精品视频人人做人人爱 | 久久国产精品视频 | 一区久久| 国产精品久久久麻豆 | 日韩在线看片 | 国产精品一区二区三 | 91精品久久久久久久久 | 嫩草懂你| 久久久久久久亚洲精品 | 亚洲国产精品一区二区三区 | 蜜臀av性久久久久av蜜臀妖精 | 91精品麻豆|