description
小明和他的好朋友小西在玩乙個遊戲,由電腦隨機生成乙個由-2,0,2三個數組成的陣列,並且約定,誰先算出這個陣列中某一段連續元素的積的最大值,就算誰贏!
比如我們有如下隨機數組:
2 2 0 -2 0 2 2 -2 -2 0
在這個陣列的眾多連續子串行中,2 2 -2 -2這個連續子串行的積為最大。
現在小明請你幫忙算出這個最大值。
input
第一行輸入乙個正整數t,表示總共有t組資料(t <= 200)。
接下來的t組資料,每組資料第一行輸入n,表示陣列的元素總個數(1<= n <= 10000)。
再接下來輸入n個由0,-2,2組成的元素,元素之間用空格分開。
output
對於每組資料,先輸出case數。
如果最終的答案小於等於0,直接輸出0
否則若答案是2^x ,輸出x即可。
每組資料佔一行,具體輸出格式參見樣例。
sample input 2
2-2 0
102 2 0 -2 0 2 2 -2 -2 0
sample output
case #1: 0
case #2: 4
剛開始的思路就是搜尋吧,搜尋主要就是三點,一點就是這點是2,那麼直接搜尋,一點就是-2,那麼就要考慮要與不要。就可以了。
不過就是超時間了,具體**如下:
超時**:
#include#include#include#includeusing namespace std;
int vis[10005],ans,n;
void dfs(int flag,int num,int i)
}int main()
{ int t;
int l=1;
scanf("%d",&t);
while(t--)
{scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%d",&vis[i]);
ans=0;
vis[0]=0;
for(int i=0;i<=n;)
{if(vis[i]==0)
{int st = i+1;
while(true){
i++;
if(i==n+1 || vis[i]==0){
int mid = solve(st,i);
if(ans
hdu4561 bjfu1270 最大子段積
就是最大子段和的變體。最大子段和只要乙個陣列,記錄前i個裡的最大子段和在f i 裡就行了,但是最大子段積因為有負乘負得正這一點,所以還需要把前i個裡的最小子段積存起來。就可以了。直接上 author ben include include include include include includ...
演算法小題 最大連續子串行和問題
解法二解法三 解法三 番外版 實驗結果 刷題的時候遇到了這個最大連續子串行和的問題,查閱研究了一下。記錄在此。希望能夠便人便己。給定乙個陣列a n 陣列元素均為自然數集 有正數,有負數 請求出該陣列乙個連續的子串行,使得這個子串行的和值最大,示例如下 a 那麼它的最大連續子串行為 和值 23 說明 ...
HDU 最大連續子串行
最大連續子串行 problem description 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為20。在今年的資料結構考卷中,要求編寫程式得到最大和,現在增加乙個要求,即還需要輸出該...