杭電oj刷題 1003(最大連續子串行)

2021-09-12 18:04:53 字數 907 閱讀 3782

sample input

25 6 -1 5 4 -7

7 0 6 -1 1 -6 7 -5

sample output

case 1:

14 1 4

case 2:

7 1 6

#includeusing namespace std;

int main()

for(int i = 1; i < n; i++)

if(thissum < 0)//步驟2

}cout << "case " << ++count << ":" << endl;

cout << maxsum << " " << maxleft + 1 << " " << maxright + 1 << endl;

if(t != 0)

cout << endl;

}return 0;

}

解題思路:該題所求的是總和最大的公共連續子串行,因此最簡單的方法是暴力破解法,但是這種方法的時間複雜度過高,為n的三次方,因此不會ac。上述**使用的方法是動態規劃,在輸入資料的過程中求解最大總和。

具體的方法:

1、使用thissum和maxthis來記錄當前總和和之前最大的總和,比較兩者的大小,如果thissum大於maxthis(即當前數是正數),則更新子串行的位置

2、如果thissum的值小於0(也就是當前的負數的絕對值是大於之前所有值的總和),則要將thissum清0,同時更新當前的位置。這樣的目的是為了計算該負數之後的子串行的最大總和,以便和該負數之前的子串行總和比較,從而得出最大的子串行的總和。

注意:在輸入第乙個資料時也要看該數是否是負數,如果是則要按步驟2的方法進行處理。

HDU 杭電 1231 最大連續子串行

最大連續子串行 problem description 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和 為20。在今年的資料結構考卷中,要求編寫程式得到最大和,現在增加乙個要求,即還需要輸...

杭電oj刷題2027

problem description 統計每個母音字母在字串 現的次數。input 輸入資料首先包括乙個整數n,表示測試例項的個數,然後是n行長度不超過100的字串。output 對於每個測試例項輸出5行,格式如下 a num1 e num2 i num3 o num4 u num5 多個測試例項...

杭電Oj刷題(2005)

題目描述 給定乙個日期,輸出這個日期是該年的第幾天。input 輸入資料有多組,每組佔一行,資料格式為yyyy mm dd組成,具體參見sample input 另外,可以向你確保所有的輸入資料是合法的。output 對於每組輸入資料,輸出一行,表示該日期是該年的第幾天。sample input 1...