給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時,定義子段和為0。
要求演算法的時間複雜度為o(n)。
輸入格式:
輸入有兩行:
第一行是n值(1<=n<=10000);
第二行是n個整數。
輸出格式:
輸出最大子段和。
輸入樣例:
在這裡給出一組輸入。例如:
6
-2 11 -4 13 -5 -2
輸出樣例:在這裡給出相應的輸出。例如:
20
#include
using
namespace std;
intmain()
cout << bests << endl;
return0;
}
給定n(n<=100)種物品和乙個揹包。物品i的重量是wi,價值為vi,揹包的容量為c(c<=1000)。問:應如何選擇裝入揹包中的物品,使得裝入揹包中物品的總價值最大? 在選擇裝入揹包的物品時,對每種物品i只有兩個選擇:裝入或不裝入。不能將物品i裝入多次,也不能只裝入部分物品i。
輸入格式:
共有n+1行輸入: 第一行為n值和c值,表示n件物品和揹包容量c; 接下來的n行,每行有兩個資料,分別表示第i(1≤i≤n)件物品的重量和價值。
輸出格式:
輸出裝入揹包中物品的最大總價值。
輸入樣例:
在這裡給出一組輸入。例如:
5 10
2 62 3
6 55 4
4 6
輸出樣例:在這裡給出相應的輸出。例如:
15
#include
using
namespace std;
int n,c,w[
105]
,v[105
],dp[
105]
[1005
],x[
105]=;
int i,j;
void
bag(
)void
print()
}if(dp[1]
[c]>=cv)
cout << dp[1]
[c];
}int
main()
bag();
print()
;return0;
}
乙個字串,如果從左到右讀和從右到左讀是完全一樣的,比如"aba",我們稱其為回文串。現在給你乙個字串,可在任意位置新增字元,求最少新增幾個字元,才能使其變成乙個回文串。
輸入格式:
任意給定的乙個字串,其長度不超過1000.
輸出格式:
能變成回文串所需新增的最少字元數。
輸入樣例:
在這裡給出一組輸入。例如:
ab3bd
abb
輸出樣例:在這裡給出相應的輸出。例如:
輸入樣例:在這裡給出一組輸入。例如:
5
30 35 15 5 10 20
輸出樣例:在這裡給出相應的輸出。例如:
11875
#include
using
namespace std;
#define n 1000
int p[n]
;int m[n]
[n];
int n;
intmaxchain()
}}return m[1]
[n];
}int
main()
小明有一張藏寶圖,上面有m*n個房間,每個房間裡面都有乙個有一定價值的寶物,小明只能從左上角的房間進入收集寶物,且每次只能向右邊或向下邊的房間繼續尋寶,最終只能從最右下的房間出來。請你幫小明計算下他最多可以收集到多少價值的寶物?
輸入格式:
輸入第一行給出兩個正整數m,n(1=輸出格式:
輸出收集到的最大價值v,題目保證v<10^9。
輸入樣例:
4 4
1 18 9 3
7 10 6 12
5 13 4 15
2 11 8 16
輸出樣例:
78
#include
using
namespace std;
int dp[
2005][
2005];
intmain()
cout << dp[m]
[n];
return0;
}
演算法 動態規劃
動態規劃 把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解 演算法例子 1.鋼條切割 serling 公司購買長鋼條,將其切割為短鋼條,切割工序假設沒有成本支出,公司管理層希望確定最佳的切割方案。假設serling公司 一段長度為i英吋的鋼條的 為pi。鋼條的長度為整英吋,下表給出...
演算法 動態規劃
1 問題具有最優子結構性質。如果問題的最優解所包含的子問題的解也是最優的,我們就稱該問題具有最優子結構性質。比如說在揹包問題中,最高總價值 max 選擇不放該物品時達到的總價值,決定放該物品時揹包剩餘容量能達到的最大價值 該物品價值 顯然,最高總價值的解一定包含 選擇不放該物品時達到的總價值 和 決...
演算法 動態規劃
動態規劃的定義 動態規劃是運籌學的乙個分支,是求解決策過程的最優化的數學方法。20世紀50年代初美國數學家r.e.bellman等人在研究多階段決策過程的優化問題時,提出了著名的最優化原理,把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解,創立了解決這類過程優化問題的新方法 動態規...