二維數組的最大聯通數組

來源:互聯網
上載者:User

標籤:

設計思路:把數按行分成幾個一維數組,對於該一維數組,求出他們的最大連續數組之和,並且記錄下最大連續數組的第一位和最後一位的位置,之後判斷幾個一維數組的最大連續數組的位置是否相接或包括,最後在加上沒有包括的正數,輸出之前之和就行。

 1 #include<iostream> 2 using namespace std; 3  4 int zuida(int n, int a[], int *sm, int *mm) 5 { 6     int b[100] = { 0 };//初始化 7     int i, sum1 = 0, max1 = 0; 8     for (i = 0; i<n; i++)//判斷最大值 9     {10         if (sum1<0)11         {12             sum1 = a[i];13         }14         else15         {16             sum1 = sum1 + a[i];17         }18         b[i] = sum1;19     }20     max1 = b[0];21     for (i = 0; i<n; i++)22     {23         if (max1<b[i])24         {25             max1 = b[i];26             *mm = i;27         }28     }29     for (i = *mm; i >= 0; i--)30     {31         if (b[i] == a[i])32         {33             *sm = i;34             break;35         }36     }37     return max1;38 }39 40 void main()41 {42     int m, n, i, j, sm, mm, t2;43     int sum, max;44     int up[100], down[100], t[100];45     int a[100][100], b[100];46     cout << "輸入二維數組的行和列";47     cin >> m >> n;48     cout << "輸入二維數組:"<<endl;49     for (i = 0; i<m; i++)50     {51         for (j = 0; j<n; j++)52         {53             cin >> a[i][j];54         }55     }56 57     for (i = 0; i<m; i++)58     {59         for (j = 0; j<n; j++)60         {61             b[j] = a[i][j];62         }63         sum = zuida(n, b, &sm, &mm);//調用函數64         up[i] = sm;65         down[i] = mm;66         t[i] = sum;67 68     }69     t2 = t[0];70     for (i = 0; i + 1<m; i++)71     {72         if (up[i] <= down[i + 1] && down[i] >= up[i + 1])73         {74             t2 += t[i + 1];75         }76         for (j = up[i]; j<up[i + 1]; j++)77         {78             if (a[i + 1][j]>0) t2 += a[i + 1][j];                   //判別獨立正數79         }80 81     }82     cout << t2 << endl;83 84 }

感想:學海無涯,學習不能放鬆,不能驕傲自滿。。。

二維數組的最大聯通數組

聯繫我們

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