軟體工程概論返回一個最大子數組的和延伸

來源:互聯網
上載者:User

標籤:

題目:返回一個整數數組中最大子數組的和

延伸要求:1,程式必須能處理1000個元素,2,每個元素是int32類型的,出現子數組之和大於整型表示的最大範圍會出現什麼情況,3,結對開發。

成員:郭婷,朱慧敏。

測試程式碼:(郭婷程式)

#include<iostream>#include<time.h>using namespace std;#define max(a,b) ((a)>(b)?(a):(b))int maxsum(int a[], int n){    int i;    int maxsofar = 0;     int maxendinghere = 0;    for (i = 0; i < n; i++)    {        maxendinghere = max(maxendinghere + a[i], 0);        maxsofar = max(maxsofar, maxendinghere);    }    return maxsofar;}int main(){    int n, i;    cout << "輸入數組所包含數的個數:";    cin >> n;    int *a;    a = new int[n];    if (a == NULL )    {        cout << "錯誤!";        return 1;    }    srand((unsigned)time(NULL));    for (i = 0; i < n; i++)    {        a[i] = rand() % 200 - 100;        cout << a[i] << " " ;    }    cout << endl;    int max=maxsum(a, n);    cout << "最大子數組的和為:" << max << endl;    delete[]a;    return 0;}

輸入10,0000的

其中,符合延伸要求1,程式能處理1000個元素。而能計算的最大範圍是10,0000,在運算10,0000的時候時間就大概用了半分鐘。而計算範圍以外,就幾乎等於死迴圈,運算時間太長。

解決方案:直接反應的解決方案就是把int改成longint或其他範圍更廣的類型。老師舉例醫院的醫學保險系統,將查詢顯示年的內容劃分成按月顯示的,縮小了顯示範圍,減少了顯示內容,就避免了內容溢出。也就是通過控制時間複雜度來控製程序可運算的範圍。個人感覺老師的方法是挺有技巧的。

結對開發作者圖片

 

總結:結對開發鍛煉我們的合作能力,郭婷的程式比較標準,所以就測試的這個程式。由她的程式,我可以看到我在編程方面確實不是很標準,而且我的程式適用範圍小,相比於較標準程式還是欠缺很多。我感覺合作會使我學到自己的不足,讓自己的程式更加標準化,不那麼”小家子氣“。

 

軟體工程概論返回一個最大子數組的和延伸

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.