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

來源:互聯網
上載者:User

標籤:

#include<iostream>    #include<ctime>using namespace std;#define M 4#define N 4int maxline(int *array, int len)       //求一維數組最大子序列和  {    int i, sum = array[0], b = 0,j = 0;    for (i = 0; i<len; ++i)    {        if (b>0)            b += array[i];        else            b = array[i];        if (b>sum)            sum = b;                }    return sum;}int maxtwodimension(int n, int m, int array[M][N]){    int i, j, h,g, max, sum = -1000;    int b[100];    for(g = 0;g < m;g++){        for (i = 0; i<n; i++)        {            memset(b, 0, sizeof(b));       //將b[100]中的數字全部初始化為0              for (j = i; j<n; j++)          //把第i行到第n行相加,對每一次相加求出最大值              {                for (h = g; h<m; h++)                {                    b[h] += array[j][h];   //求一行的和,二維數組壓縮成一維數組                  }                max = maxline(b, h);   //按照一維數組求最大子數組的方法,求最大子序列和                if (max>sum)                    sum = max;            }        }    }    return sum;}int main(){    int arr[M][N];    cout << "隨機二維數組為:" << endl;    srand((unsigned)time(0));    for (int i = 0; i < M; i++)    {        for (int j = 0; j < N; j++)        {            arr[i][j] = rand() % 100-25;            cout << arr[i][j] << " ";        }        cout << endl;    }    cout <<"最大子矩陣和為:  "<< maxtwodimension(M, N, arr) << endl;    return 0;}

 

設計思路:我還是根據一維數組的求解過程,把二維數組先求出每一行的和儲存到一維數組中,根據一維數組的求解過程求出二維數組最大的數組,然後逐步縮小二維數組的行數和列數繼續按照一維數組求最大子數組的方法求解。但是使用了o(n4)暫時還是想不出來o(n)的計算方法

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

聯繫我們

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