演算法描述:本題可以使用窮舉法,但是那樣不容易實現以及效率不高,我們的想法是,將二維陣列變成一維陣列,再將此「一維陣列」按照上次的做法既可求出最大子陣列,
怎麼樣將二維變成一維呢:例如我們做的是四行四列的陣列,將每一行用乙個sum來表示,則有sum[1],sum[2],sum[3],sum[4],sum[1]動態的代表此行的和,例如前兩個數的和,再往後變成前三個數的和,每當求出一行的和時,同時也求出了以下三行的和,然後將sum陣列看成一維陣列進行比較求出最大值,然後動態的向後推進,直到遍歷完,即可求出最大值
程式:
#includeint main()執行結果://初始化
for(j=m;j<4;j++)
//求行的值變成一維陣列
for(n=0;n<4;n++)}}
} printf("最大值為%d\n",max);
return 0;
}
課下討論截圖:
二維陣列求最大子陣列
程式要使用的陣列放在乙個叫 input.txt 的檔案中,檔案格式是 陣列的行數,陣列的列數,每一行的元素,用逗號分開 每乙個數字都是有符號32位整數,當然,行數和列數都是正整數。演算法思想 對於一維的陣列,我們可以很容易用動態規劃的方法求得最大子陣列 所以我們將i 0.n j i.n 列舉所有行的...
最大子矩陣 二維樹狀陣列
最大子矩陣 題目鏈結 這裡就是直接套取二維樹狀陣列的模板 題目要求了求的是長是x寬是y的最大矩陣的和 在for迴圈呢裡控制下就可以了 其他的沒有什麼了 include include include include using namespace std long long c 1007 1007 ...
35 求乙個矩陣中最大的二維矩陣
求1個矩陣中最大的二維矩陣 1。單就這一題來說,首先方法就是遍歷 include using namespace std int a 5 int m 3 int n 5 void max matrix void cout 矩陣是 1 1 s 1 s 1 int main void 還有1種情況,給定...