1000個數,求相鄰數之和的最大值(結對完成作業)

2022-09-01 12:51:07 字數 2390 閱讀 6627

設計思想

1 .輸入整型陣列(1000個元素)

2.動態規劃實現最大子陣列之和

3.加入int32型別的數值溢位判斷

4.輸出最大子陣列之和和其位置。

一.對於乙個元素個數較小的int陣列,沒有int32陣列溢位判斷

1 #include2

using

namespace

std;

3int

main()415

int sum=p[0

];16

int max_sum=p[0

];17

//copy的csdn上大神的**。注釋為自己理解

18for(int i=1;i)

1928}29

else

3038}39

}40 cout<

最大子陣列位置為第

"<1

<

個到第"

<1

<

<

41 cout<

最大子陣列和為

二.乙個1000元素個數的陣列(為了測試輸入便利,利用隨機數及隨機數種子實現1000個元素),加入int32型別判斷溢位

1 #include2 #include3 #include 4

using

namespace

std;

5int

main()615

//列印這個1000個元素的陣列

16for(int i=0;i)

1723}24

int sum=p[0

];25

int max_sum=p[0

];26

//copy的csdn上大神的**。注釋為自己理解

27for(int i=1;i)

2836 sum=sum+p[i]; //

是正數,將和值(初始值為p)和第i+1個數做和。

37if(sum>max_sum) //

並判斷是否為最大,是讓其賦值給max_sum,並將子陣列末位置改變。

3842}43

else

4452}53

}54 cout<

最大子陣列位置為第

"<1

<

個到第"

<1

<

<

55 cout<

最大子陣列和為

三.為了測試出int32型別溢位,將隨機數擴大10^6倍

1 #include2 #include3 #include 4

using

namespace

std;

5int

main()616

//列印這個1000個元素的陣列

17for(int i=0;i)

1824}25

int sum=p[0

];26

int max_sum=p[0

];27

//copy的csdn上大神的**。注釋為自己理解

28for(int i=1;i)

2937 sum=sum+p[i]; //

是正數,將和值(初始值為p)和第i+1個數做和。

38if(sum>max_sum) //

並判斷是否為最大,是讓其賦值給max_sum,並將子陣列末位置改變。

3943}44

else

4553}54

}55 cout<

最大子陣列位置為第

"<1

<

個到第"

<1

<

<

56 cout<

最大子陣列和為

總結      

對於解決最大子陣列之和的問題有一定的演算法,但實際實現成**形式有很大困難,最後借鑑網上大神的**並理解才能實現。估計2個半小時,實際用時近3個小時。團隊合作幫助很大

ACM hdu1000(求兩數之和)

大三狗準備重拾acm了,想當初大一的時候因為格式錯誤就放棄了acm,那時候還真是不堅定呢,不過幸好後來也沒有荒廢時光吧。發現在杭電提交的 不知道 可以看到,所以決定在部落格裡面記錄下來,由於本校的oj關掉了,所以選擇了杭電的oj,從第1000題開始刷,平時c和c 都有用,所以寫的時候一般哪個手順用哪...

7 給定n個序列,求相鄰的k個數之和為最大

1 問題描述 給定 n個數,求相鄰的 k個數之和為最大。要求給出複雜度較小的一種演算法 再解決這個問題前,先了解一下類似的常見問題。2 給定一串數字 可正可負的 int,放在陣列 num裡 要求找到起始位置 start 和終止位置 end,使得從 start 位置到end 位置的所有數字之和最大,返...

對乙個陣列排序之後求相鄰數的最大差值

題目 給定乙個整形陣列arr,返回排序後的相鄰兩數的最大差值。時間複雜度為o n 解答 如果用排序法實現,其時間複雜度為o nlogn 而如果利用桶排序的思想 不是桶排序 可以做到o n 額外空間複雜度為o n 遍歷arr找到最大值max和最小值min。如果arr的長度為n,準備n 1個桶,把max...