思路,有了一維的思路,我們想辦法把二維問題轉化為一維的問題。
我們假定已經選中了行的範圍是 a-c 那麼把每一列中 a-c的元素加起來就變成了乙個一維的問題。只需對行的範圍遍歷,再用一維的方法來解就可以了。
注意,也可以對列的範圍遍歷,行和列那個小就對哪個遍歷。 複雜度為o(m * n * min(m, n))
#include #includevoid getsumcol(int * a, int acolnum, int rowbegin, int rowend, int *sumcolarray)
}}int getmax2darraysum(int * a,const
int arownum,const
intacolnum)}}
free(sumcolarray);
return
maxsum;
}int
main()
, ,,};
int max = getmax2darraysum((int*)a, 4, 5
);
return0;
}
程式設計之美 2 15 子陣列之和的最大值(二維)
給乙個二維陣列,求子陣列的和的最大值,也就是求子矩陣的最大和。這道題的解題思路與2.14求陣列的子陣列之和的最大值有類似之處,具體步驟如下 設原陣列為a,行數為row,列數為column.1.先求矩陣p row 1,column 1 p i,j 表示在a中以a i 1,j 1 到a 0,0 為對角線...
程式設計之美 求陣列的子陣列之和的最大值
前段子時間舍友恒恒問了我乙個問題 怎樣在乙個陣列中找到乙個子陣列使得各個元素之和最大,當時自己想了片刻,設定乙個變數sum,就說從左邊開始變數整個陣列,乙個個相加到sum中,發現了sum 0的話,就把sum設定為0就可以了,後來想了下,得到的結果未能保證正確,我們應該在遍歷的過程中儲存下sum的最大...
求陣列的子陣列之和的最大值(程式設計之美)
題目要求 乙個有n個整數元素的一維陣列 a 0 a 1 a n 2 a n 1 這個陣列當然有很多子陣列,那麼子陣列中和最大值是多少呢?1 子陣列是連續的 2 求子陣列的和,不用求子陣列的具體位置 3 陣列的元素時整數,所以陣列可能包含有正整數 零 負整數 解法一 暴力解法,從陣列的第0位開始遍歷陣...