日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

N 组连续子串最大和

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 N 组连续子串最大和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  數組 a 中有 M 個數 , 將 M 個數分成 N 組 , 并且每組中的數據順序和原數組中的順序保持一致,求 N 組中的數據之和最大為多少?

  向 dp 數組中賦初始值 ,如果 M == N ,則 dp[ i ][ i ] = dp[ i - 1 ][ i - 1 ] + a[ i ] ;

  若N為1時 ,即為求連續子串最大和問題;

  假設dp[ 1 ][ i ] ( 2 =< i <= M) 代表 與第 i 個數組成連續子串的最大和,當dp[ 1 ][ i - 1 ] < 0 時 , a[ i ] 獨立作為一個子串 , 即 dp[ 1 ][ i ] = max ( dp[ 1 ][ i -1 ] + a[ i ] , a[ i ] ) ;很需要注意的一點是:dp[ 1 ][ i ] 不一定是 i 個數中連續子串的最大和。

分別求出數組中有一個數、兩個數、三個數……M個數中連續子串的最大和,用dp[ i ][ 1 ] 來表示;

  若N為2時,表示將M個數分成 2 組 ,求兩組數中的和最大 ;

  dp[ 2 ][ i ] ( 3 =< i <= M ) 代表 與第 i 個數組成連續子串,形成兩個連續子串中,第2個子串的最大和;

  可知,第二個子串可以單獨成為一段,最終形成兩段,也可以和上一個段一起形成一段,最終形成兩段;

所以 dp[M][N] ?代表 與第M個數組成的連續子串的最大和,但不一定是 M 個數中連續子串的最大和 ;

  與第 M 個數組成連續子串時 ,第 M 個數可以與第 M-1 個數組成的子串組合,也可以獨立作為一個子串 , 與 ?M-1 個數組成的(N-1)組連續子串中最大和組合 ,才能達到分成 N 組的效果;

  最后輸出dp數組中最大值,即為 N 組中數據之和的最大值;

?

  

下面給出相應的代碼:

#include<iostream> using namespace std ; #define M 100005 #define max(x,y) ((x) > (y) ? (x) : (y)) int a[ M ] , dp[ M ][ M ] ; int main() {int k , n ;while(cin >> k >> n) {int i ;for(i = 1 ; i <= n ; i++)cin >> a[i] ;memset(dp,0,sizeof(dp)) ;for(i = 1 ; i <= k ; i++) {dp[i][i] = dp[i-1][i-1] + a[i] ;dp[i-1][i] = max(dp[i-1][i],dp[i-1][i-1]) ;for(int j = i + 1 ; j <= n ; j++) {dp[i][j] = max(dp[i-1][j-1]+a[j],dp[i][j-1]+a[j]) ;dp[i-1][j] = max(dp[i-1][j],dp[i-1][j-1]) ;}}int max1 = -(1<<30) ;for(i = k ; i <= n ; i++)max1 = max(max1,dp[k][i]) ;cout << max1 << endl ;}return 0 ; }

?

  

  上面的代碼空間復雜度比較高,但通過觀察可以得到,依照滾動數組的思想,讓dp數組的行數為2,在兩行中循環,這樣輕易一改,省去了很多空間:

有木有很強大!!! ? ? ?思維決定到效率!!!

?

#include<iostream> using namespace std ; #define M 100005 #define max(x,y) ((x) > (y) ? (x) : (y)) int a[ M ] , dp[ 2 ][ M ] ; int main() {int k , n ;while(cin >> k >> n) {int i ;for(i = 1 ; i <= n ; i++)cin >> a[i] ;memset(dp,0,sizeof(dp)) ;int t = 0 ;for(i = 1 ; i <= k ; i++) {t = !t ;dp[t][i] = dp[!t][i-1] + a[i] ;dp[!t][i] = max(dp[!t][i],dp[!t][i-1]) ;for(int j = i + 1 ; j <= n ; j++) {dp[t][j] = max(dp[!t][j-1]+a[j],dp[t][j-1]+a[j]) ;dp[!t][j] = max(dp[!t][j],dp[!t][j-1]) ;}}int max1 = -(1<<30) ;for(i = k ; i <= n ; i++)max1 = max(max1,dp[k&1][i]) ;cout << max1 << endl ;}return 0 ; }

?

?

?

轉載于:https://www.cnblogs.com/scottding/p/3613166.html

總結

以上是生活随笔為你收集整理的N 组连续子串最大和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.五月婷| 亚洲色婷婷久久精品av蜜桃 | 538在线精品| 亚洲日本一区二区 | 日本不卡一区二区三区视频 | 国产欧美一区二区三区精华液好吗 | 一区二区三区在线观看免费视频 | 日本做爰高潮又黄又爽 | 91视频插插插 | 久久精品播放 | 222aaa| 手机天堂av| 国产情侣在线视频 | 欧美性俱乐部 | 九九免费在线视频 | 中文字幕av免费在线观看 | 超色视频 | 欧美亚洲精品一区二区 | 国产毛片毛片毛片毛片毛片 | 男人天堂怡红院 | 亚洲视频一区 | 四虎国产精品免费 | 69视频在线播放 | 五月天av影院 | 日韩亚洲在线观看 | 日韩av无码中文字幕 | 精品人妻一区二区三区日产乱码卜 | 久久久久久久久久久国产精品 | 99精品一区二区三区无码吞精 | 日韩一区二区三区四区五区六区 | 亚洲av无码久久精品狠狠爱浪潮 | 国产91白丝在一线播放 | 日韩免费淫片 | 黄色一级片在线免费观看 | 亚洲一区图片 | 一区二区精品久久 | 亚洲AV无码阿娇国产精品 | 久久88 | 91视频首页| 国语对白做受69按摩 | 欧美日韩在线二区 | 热九九精品| 精品久久久久久亚洲 | 欧美,日韩,国产精品免费观看 | 日韩激情片 | 亚洲少妇18p | 好大好爽视频 | 天堂在线亚洲 | 欧美性生交片4 | 欧美亚洲综合视频 | 五月天一区二区三区 | 欧美bdsm调教视频 | 欧美性生交大片免费看app麻豆 | 浮妇高潮喷白浆视频 | 人妻少妇精品中文字幕av蜜桃 | 毛片一区二区三区 | 黄页免费网站 | 成人免费不卡视频 | 狠狠干天天干 | av先锋资源网 | 91国内在线视频 | 国产在线色 | 香蕉在线看 | 色婷婷视频 | 久久成人a毛片免费观看网站 | 花房姑娘免费全集 | 欧美国产精品一区二区 | av资源导航| 特级丰满少妇一级aaa爱毛片 | 人人澡超碰碰97碰碰碰 | 日韩爽片 | 国产喷水福利在线视频 | 久久高清免费 | 亚洲黄色在线免费观看 | 黄色三级视频在线观看 | 成人在线一区二区三区 | 男人添女人下部高潮全视频 | 白浆在线 | 亚洲一品道| 日韩欧美一区二区三区 | 亚洲精品大全 | 香港av在线 | 国产精品乱码一区二区三区 | 久久久久香蕉视频 | 精品人人人人 | 一级淫片a | 在线成人免费视频 | 成人福利小视频 | 亚洲中午字幕 | 欧美福利网 | 国产精品久久久久久久午夜 | 国产精品jizz视频 | 天天干夜夜嗨 | 国产亚洲精品成人av在线 | 国产三级网| 波多野结衣不卡 | 永久免费未满蜜桃 | 国产大片中文字幕 | 国产青青视频 |