軟體工程課堂作業(九)——結對開發(四)

來源:互聯網
上載者:User

標籤:

一、題目及要求:

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

      要求(新加):①如果數組A[0]...A[j-1]首尾相鄰,允許A[i-1]...A[n-1],A[0]...A[j-1]之和最大;②同時返回最大子數組的位置。

      結對人員:焦燕   胡亞寶

二、設計思路:

      我們要解決兩個問題:求出環數組中最大的子數組;並且定位出該子數組的位置,把它們的名稱輸出來。要解決這兩個問題,我們從以下兩個方面入手:

      ①求出最大子數組:將數組數值按順序排好稱為“一趟”,每求出一趟的最大子數組後,將第一個數值放到最後一個,排成新的一趟,以此類推,直到遍曆完成,求出最大環子數組。

      ②定位子數組:判斷出當前求的和值為負數時,將之捨去,並將該數的下一個數的位置存起來作為最大子數組的頭。當求出最大值後,該數的位置存起來作為子數組的尾。最後輸出將子數組的名稱。

三、原始碼:

 1 //結對開發——焦燕   胡亞寶  2  3 #include "stdafx.h" 4  5  6 int _tmain(int argc, _TCHAR* argv[]) 7 { 8     int i,j,k,m,n,o,a[5];  9     int Sum,Max,flag,flag1=0,flag2,flag4;10     11     printf("請輸入5個整數:\n");12     for(k=0;k<5;k++)13     {14         scanf("%d",&a[k]);15     }16     Max = a[0];17     for (m=0;m<5;m++)18     {19         for(i=0;i<5;i++)  20         {  21             Sum = 0;             22             for(j=i;j<5;j++)  23             {  24                 Sum =Sum+ a[j];25                 if(Sum<=0)26                 {27                     Sum=0;28                     flag1=(j+1+m)%5;29                 }30                 if(Sum > Max)  31                 {32                     Max =Sum;  33                     flag2=j+m;    34                 }35             }  36         }  37         flag=a[0];38         for(n=0;n<5;n++)39         {40             a[n]=a[n+1];41         }42         a[4]=flag;43     }44     if(Sum==0)45     {46         47         Max=a[0];48         for(int e=0;e<5;e++)49         {50             if(a[e]>=Max)51             {52                 Max=a[e];53                 flag4=e;54             }55         }56         57     }58     printf("最大連續環子數組的和為:%d\n",Max);59     printf("該最大連續環子數組為:");60 61     if(Sum==0)62     {63         printf("a[%d]",flag4);64     }65     else66     {67         int flag3=flag2-flag1;68         for(o=0;o<=flag3;o++)69         {70             printf("a[%d]\t",flag1);71             flag1++;72             if(flag1>4)73                  flag1=0;74         }75     }76     printf("\n");77     return 0;78 }

四、測試及運行結果:

測試資料:

3 6 -9 0 7(有正數、負數、零)

7 9 3 2 8 (只有正數)

-3 -6 -9 -2 -5(只有負數)

運行結果:

五、心得體會:

      

 

軟體工程課堂作業(九)——結對開發(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.