聯通子數組(一)

來源:互聯網
上載者:User

標籤:

本次實驗任務:

思路分析:

將二維拆分為一維,先求得每一行的最大子數組的和,並且求得每一行最大子數組的起始元素和終止元素,與其他行的進行比較,檢查是否聯通,若聯通,則將兩行的子數組最大值和相加,找出不同行子數組最大值求和的最大值即為所求

已實現的代碼:

 1 #include<iostream> 2 #include<ctime> 3 int max_(int j, int *array, int &first, int &last); 4 using namespace std; 5 #define row 5//行數 6 #define col 5//列數 7 int main() 8 { 9     srand((int)time(NULL));//隨機種子10     int i, j,a[100][100];11     int array[100];12     int max_row[100];13     int sum=0,max=0;14     int first_num=0, last_num=0;15     for (i = 0; i < row; i++)16     {17         for (j = 0; j < col; j++)18         {19             //從(-100)到100間的隨機數給二維數組賦值20             a[i][j] = rand() %(100-(-100)+1)-100 ;21         }22     }23     cout << "數組為:"<<endl;24     //顯示數組25     for (i = 0; i < row; i++)26     {27         for (j = 0; j < col; j++)28         {29             cout << a[i][j]<<" ";30         }31         cout << endl;32     }33     cout << endl;34     //------------------------------------------------------------35     //每一行賦予一個一維數組36     for (i = 0; i < row; i++)//每一行37     {38         for (j = 0; j < col; j++)//每一列39         { 40             array[j] = a[i][j];41         }42         max_row[i]=max_(j, array,first_num,last_num);//求每一行的子數組和的最大值43         cout << max_row[i] <<" "<< first_num<<" "<<last_num<<endl;44         45     }46     return 0;47 }48 //求一維數組子數組和的最大值49 int max_(int j,int *array,int &first,int &last)50 { 51     int sum = 0, max = 0;52     for (j = 0; j < col; j++)53     {54         sum = sum + array[j];55         if (sum > max)56         {57             max = sum;58         }59         if (sum < 0)60         {61             sum = 0;62         }63         if (max == 0)64         {65             sum = sum + array[j];66             if (sum > max)67             {68                 max = sum;69             }70         }71         72     }73     return max;74 }

效果:

 

體會:由於主要精力放到了四則運算安卓方面(也沒有太多成果),導致本次任務時間有點緊張,思考不夠,現在只實現了求每一行子數組和的最大值,遇到瓶頸:由於演算法原因起始元素和終止元素的值得確定有點混亂,明天加油,今天腦袋有點亂了,先學會兒別的

聯通子數組(一)

聯繫我們

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