二维数组求最大子矩阵的和
生活随笔
收集整理的這篇文章主要介紹了
二维数组求最大子矩阵的和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:返回一個二維整數數組中最大子數組的和
要求:
?????? 輸入一個二維整形數組,數組里有正數也有負數。
?????? 數組中連續的一個或多個正數組成一個子數組,每個子數組都有一個和。
設計思想:
???????將二維數組的所能組成的所有一維數組都存入到另一個數組中,利用求一維數組的最大子數組的和 求得。
1 //求得二維數組Array中所能組成的所有一維數組放入到Brray中 2 //再利用求一維數組中最大子數組的和 求得每個一維數組即Brray每一列最大子數組(展開后即為Array子矩陣)的和 3 //在所有和中最大的即為二維數組Array中最大子矩陣的和 4 #include <iostream> 5 using namespace std; 6 int MaxNums(int Array[],int length) //求一維數組最大子數組的和 7 { 8 int maxSumOfArray,maxSum; 9 maxSumOfArray=maxSum=Array[0]; 10 //當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。 11 //如果當前得到的和是個負數,那么這個和在接下來的累加中應該拋棄并重新清零,不然的話這個負數將會減少接下來的和。 12 for(int i=1;i<length;i++) 13 { 14 maxSumOfArray=max(maxSumOfArray+Array[i],Array[i]); //變量maxSumOfArray 為包含Array[i] 與Array[i] 取最大 15 maxSum=max(maxSum,maxSumOfArray); ////變量maxSum 為maxSum 與 maxSumOfArray 取最大 16 } 17 return maxSum; 18 } 19 int main() 20 { 21 int len,hig; //len為輸入二維數組的列數(長) hig為輸入二維數組的行數(高) 22 cout<<"輸入行數"; 23 cin>>hig; 24 cout<<"輸入列數"; 25 cin>>len; 26 int Array[10][10]; 27 for(int i=0;i<hig;i++) 28 { 29 for(int j=0;j<len;j++) 30 { 31 cin>>Array[i][j]; 32 } 33 } 34 int Brray[100][10]; 35 int a=0; 36 for(int i=1;i<=hig;i++) 37 { 38 a+=i; 39 } 40 for(int i=0;i<a;i++) 41 { 42 for(int j=0;j<len;j++) 43 { 44 Brray[i][j]=0; 45 } 46 } 47 // 1 列的有一種 2列的有2種 1的兩個 2的一個 3的有3種... 48 //計算二維數組Array所能組成的所有一維數組 依次放入到Brray中 49 //二維數組Array所能組成的所有一維數組包括 第i列 第i列+第i+1列 第i列+第i+1列+第i+2列 ... 50 int h=0; 51 for(int n=0;n<hig;n++) 52 { 53 for(int i=0;i<hig-n;i++) 54 { 55 for(int j=0;j<len;j++) 56 { 57 for(int k=0;k<=n;k++) 58 { 59 Brray[h][j]+=Array[i+k][j]; 60 } 61 } 62 h++; 63 } 64 } 65 //輸出二維數組Brray 66 /*for(int i=0;i<a;i++) 67 { 68 for(int j=0;j<len;j++) 69 { 70 cout<<Brray[i][j]<<" "; 71 } 72 cout<<endl; 73 }*/ 74 int Max=MaxNums(Brray[0],len); 75 for(int i=1;i<a;i++) 76 { 77 Max=max(Max,MaxNums(Brray[i],len)); 78 } 79 cout<<"此二維數組中最大子二維數組的和為"<<Max<<endl; 80 }結果截圖:
?
轉載于:https://www.cnblogs.com/L-Damon-v/p/5330329.html
總結
以上是生活随笔為你收集整理的二维数组求最大子矩阵的和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS开发--线程通信
- 下一篇: jQuery 效果 - 动画