問題描述:
小明和他的好朋友小西在玩乙個遊戲,由電腦隨機生成乙個由-2,0,2三個數組成的陣列,並且約定,誰先算出這個陣列中某一段連續元素的積的最大值,就算誰贏!輸入:比如我們有如下隨機數組:
2 2 0 -2 0 2 2 -2 -2 0
在這個陣列的眾多連續子串行中,2 2 -2 -2這個連續子串行的積為最大。
現在小明請你幫忙算出這個最大值。
第一行輸入乙個正整數t,表示總共有t組資料(t <= 200)。輸出:接下來的t組資料,每組資料第一行輸入n,表示陣列的元素總個數(1<= n <= 10000)。
再接下來輸入n個由0,-2,2組成的元素,元素之間用空格分開。
第一行輸入乙個正整數t,表示總共有t組資料(t <= 200)。樣例輸入:接下來的t組資料,每組資料第一行輸入n,表示陣列的元素總個數(1<= n <= 10000)。
再接下來輸入n個由0,-2,2組成的元素,元素之間用空格分開。
2輸出:2 -2 0
10 2 2 0 -2 0 2 2 -2 -2 0
case #1: 0建立乙個二維陣列儲存輸入的資料:case #2: 4
int t,n;
//定義乙個動態二維int陣列
int**arr;
//建立行指標
arr=new int
*[t];
//輸入資料
srand((int)time(null));
for(int i=0;i//為每一行分配空間
scanf("%d",&n);
arr[i]=new int[n+1];
arr[i][0]=n;
for(int j=1;j1;j++)
printf("\n");
}
輸出最大積:
for(int i=0;iint max_value=0;
for(int j=1;j<=arr[i][0]-1;j++)
}printf("\ncase #%d:%d",i+1,max_value);
}
怎樣生成隨機數 -2 0 2:
c語言生成的隨機數為無符號數,即都是正的。要想生成正負隨機的,可以先通過模除限定返回,再減去對應的範圍的中間值即可。比如,要獲取-1000~+1000範圍的隨機數,總的數量為2001個,這樣就可以通過**rand()%2001 使得到的結果限制在0-2000範圍,再減去1000, 結果就是-1000~+1000之間了。寫成**就是rand()%2001 - 1000;
經典 最大和 最大積連續子串行問題
原文 對於乙個包含了正負整數的陣列,求其 最大和 連續子串行 以及 最大積 連續子串行 比如 3 4 8 5 2 6 7 最大和子串行是 8 5 2 6,和為11 最大積子串行是 3 4 8 5 2 6,積自己算 對於最大和問題 我們令f n 表示 0,n 區間內以d n 為結尾的最大和,d為原序列...
求子陣列的連續最大積 面試精選
這幾天看到這個問題,然後在網上沒能找到完整的答案,作者kay zhyu給出了不錯的思路,而且針對大部分測試時都能給出正確的答案,但是在正負小數比較多時,有些結果不對。其實質時,忽略了小數相乘時結果越來越小這個結論,當兩個小數相乘時,乘積肯定沒有當前這個數大,因而我們需要保留當前這個數作為最大的乘積。...
hdu 4561 模擬小題or連續最大積
description 小明和他的好朋友小西在玩乙個遊戲,由電腦隨機生成乙個由 2,0,2三個數組成的陣列,並且約定,誰先算出這個陣列中某一段連續元素的積的最大值,就算誰贏!比如我們有如下隨機數組 2 2 0 2 0 2 2 2 2 0 在這個陣列的眾多連續子串行中,2 2 2 2這個連續子串行的積...