思路:
既然要求乙個數列中最大子列的值。
第一種思路:暴力,直接遍歷這個數列,但最大的數列元素個數有10000個,所以肯定超時;
所以想到第二種方法:只需要遍歷一遍這個數列。從第乙個數字一直往後加,求和,如果和乙隻在增大,那麼不斷更新最大值和 上限(題目輸出要求中的第三個數字);
如果碰到所求和比最大值小了那麼就不更新,一但發現所求和<0, 就把 「sum 」(所求和)變成這個元素。重新開始。
#include
#include
int main()
for(int i=0; i
else
if(sum > max)
}printf("case %d:\n%.0lf %d %d\n",++kase,max,flag1+1,flag2+1);
if(t)
printf("\n");}}
HDOJ 1003 最大子串行和
最開始題目都沒看懂,看了別人的部落格才知道這道題是要求最大子串行和。這裡我先歸納了三種求解最大子串行和問題的演算法,在最後給出該題的ac 直接遍歷所有可能的情況。int maxsubsequence1 int arr,int n return max sum 若將乙個序列從中分為兩半的話,該序列的和...
動態規劃 最大子串 HDOJ1003
題目大意 輸入是具有n個整數的向量x,輸出是輸入向量的任何聯絡子向量中的最大和,並輸出該子向量的開始和結束為止。例如 輸入 5 6 1 5 4 7 7 0 6 1 1 6 7 5 輸出 case 1 14 1 4 case 2 7 1 6 分別有四種方法都能夠求解出來分別是o n 3 和o n 2 ...
HDOJ1003最大和子陣列(動態規劃)
題目大意 輸入t為總的案例數,每個案例中首先輸入n表示陣列長度,隨後輸入n個數a 1 a n 表示乙個陣列,求乙個子陣列,要求這個子陣列所有數加起來和最大,並輸出這個子陣列的起始下標,如果有多個子陣列都是和最大的,則輸出第乙個滿足條件的子陣列的下標。考慮前n個元素 陣列所有元素 設f n 為從前n個...