最大子序列和(動態規劃)
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int a[100010];
int dp[100010];
int max(int x,int y){return x>y?x:y;}
int main()
{
int k;
int i;
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%d",&a[i]);
}
memset(dp,0,sizeof(dp));//初始化dp
dp[0]=a[0];
for(i=1;i<k;i++)
{
dp[i]=max(0,dp[i-1])+a[i];
}
int ans=dp[0];
for(i=0;i<k;i++)
{
if(ans<dp[i]){ans=dp[i];}
}
printf("%d\n",ans);
return 0;
}
相關推薦
最大子序列和(動態規劃)
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;int a[100010];int dp[100010];int max(int x,in
hdu-1231 連續最大子序列(動態規劃)
得到 繼續 用例 using 規劃 mem 空格 編寫 序號 Time limit1000 ms Memory limit32768 kB 給定K個整數的序列{ N1, N2, ..., NK },其任意連續子序列可表示為{ Ni, Ni+1, ..., Nj },其中
[洛谷]P1115 最大子段和 (#動態規劃 -1.6)
題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入輸出格式 輸入格式: 第一行是一個正整數NN,表示了序列的長度。 第二行包含NN個絕對值不大於10000的整數Ai,描述
noip2013 小朋友的數字 (最大子區間和+動態規劃)
有 n 個小朋友排成一列。每個小朋友手上都有一個數字,這個數字可正可負。規定每個小朋友的特徵值等於排在他前面(包括他本人)的小朋友中連續若干個(最少有一個)小朋友手上的數字之和的最大值。 作為這些小朋友的老師,你需要給每個小朋友一個分數,分數是這樣規定的:第一個小朋友的分數是他的特徵值,其它小朋友的分數為排
leetcode 53 最大子序列之和(動態規劃)
array num pan arr turn leet lse 最大 clas 思路:nums為給定的數組,動態規劃: 設 一維數組:dp[i] 表示 以第i個元素為結尾的一段最大子序和。 1)若dp[i-1]小於0,則dp[i]加上前面的任意長度的序列和都會小於n
HDU acm 1003 Max Sum || 動態規劃求最大子序列和詳解
line namespace num more sequence mem ould 動態規劃 ger Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot
基於python的動態規劃經典問題(爬樓梯,取珠寶,最大子序列和,找零錢)
1,爬樓梯問題 一個人爬樓梯,每次只能爬1個或兩個臺階,假設有n個臺階,那麼這個人有多少種不同的爬樓梯方法 動態規劃的狀態轉移:第 i 個狀態的方案數和第 i-1, i-2時候的狀態有關,即:dp[i]=dp[i-1]+dp[i-2],dp表示狀態矩陣。 def climb_stai
數字三角形最小路徑和—動態規劃
div 路徑和 image 動態 節點 spa 直接 .cn 一行 思路:自底向上求解,從倒數第二行開始,本行節點到最後一行的最小路徑和等於該節點的數據加上下面左右兩個數據中最小的一個。不使用額外空間,直接將最小路徑和存儲到原有的數組中。1 int minimumTota
算法入門:最大子序列和的四種算法(Java)
else 初始化 需要 nbsp ava 時間 pos sub for循環 最近再學習算法和數據結構,推薦一本書:Data structures and Algorithm analysis in Java 3rd 以下的四種算法出自本書 四種最大子序列和的算法: 問題描
最大子序列和問題
class 輸入數據 bsp sub == order color 解決辦法 可能 問題描述: 給定一整數序列A1, A2,... ,An (可能有負數),求A1~An的一個子序列Ai~Aj,使得Ai到Aj的和最大。 解決辦法: 分治法:最大子序列和可能出現在三個地方:整個
[bzoj1084][SCOI2005]最大子矩陣_動態規劃_偽·輪廓線dp
cst 動態規劃 時間復雜度 oid 子矩陣 。。 敬畏 版本 我們 最大子矩陣 bzoj-1084 SCOI-2005 題目大意:給定一個n*m的矩陣,請你選出k個互不重疊的子矩陣使得它們的權值和最大。 註釋:$1\le n \le 100$,$1\le m\le 2
PAT Maximum Subsequence Sum[最大子序列和,簡單dp]
ace 序號 fin nts 很好 lag malle test 二次 1007 Maximum Subsequence Sum (25)(25 分) Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }.
0.分治永遠大於順序?關於最大子序列和問題的思考
right -s 三層 代碼 不同的 復雜 round 開始 center p17. 2.4.3 最大子序列和的問題的解 題目:給定整數A1,A2,......,AN,求∑k=i~jAk的最大值(如果所有整數都為負數,則最大子序列和為0) 書中給出了四種不同的算法,時間復
HDU1003 結題報告(最大子序列和)
HDU1003 Max Sum 題解 #include<iostream> #include<algorithm> #include<string> #include<math.h> #include<set> #in
leetcode 最大子序列和
題目描述: 給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子陣列 [4,-1,2,1] 的和最大,為
單調遞增最長子序列(動態規劃)
單調遞增最長子序列 題目描述: 求一個字串的最長遞增子序列的長度 如:dabdbf最長遞增子序列就是abdf,長度為4 輸入描述: 第一行一個整數0<n<20,表示有n個字串要處理 隨後的n行,每行有一個字串,該字
【演算法競賽進階指南】單調佇列CH1201最大子序列和
輸入一個長度為n的整數序列,從中找出一段不超過m的連續子序列,使得整個序列的和最大。下標位置遞增、對應的字首和S的值也遞增的序列為最優的選擇策略我們掃描i,對i進行如下操作1.判斷隊頭與i的距離與m的關係來決策是否出隊2.更新答案3.刪除隊尾決策使整個佇列單調 n=6 m=4輸入資料:1 -3 5 1 -2
最大子序列和-HDU 1003
最大子序列和 O(n):DP O(nlgn):分治法 O(n2):列舉 HDU 1003 Input The first line of the input contains an integer T(1<=T<=20) which means
最大子序列和問題求解
問題: 給定(可能有負數)的整數 A1,A2,…,AnA_{1},A_{2},\ldots ,A_{n}A1,A2,…,An 的最大值。 解決此問題有四個演算法: 演算法一: public st
連續最大子序列和的幾種演算法
題目: 連續子序列最大和,其實就是求一個序列中連續的子序列中元素和最大的那個。 比如例如給定序列: { -2, 11, -4, 13, -5, -2 } 其最大連續子序列為{ 11, -4, 13 },最大和為