第2章 數字之魅 子陣列之和的最大值(二維)

2021-09-07 00:24:22 字數 1400 閱讀 4589

我們在前面分析了一維陣列之和的最大值問題,那麼如果是二維陣列又該如何分析呢?

最直接的方法,當然就是列舉每乙個矩形區域,然後再求這個矩形區域中元素的和。

完整**如下:

1

package

chapter2shuzizhimei.maxsumsubarraytwodimensional;

2/**

3* 求陣列的子陣列之和的最大值(二維)

4* 【解法一】5*

@author

dell6*

7*/8public

class

maxsumsubarray2d

13/**

14* 求陣列的子陣列之和的最大值(二維)

15*

@param

a 二維陣列

16*

@param

n 行17

* @param

m 列18

* @return

最大和19

*/20

public

static

double maxsum(double a,int n, int

m)

46 maximum =max(maximum,sum); 47}

48return

maximum;49}

5051

public

static

void

main(string args) ,};

53 system.out.println("求陣列的子陣列之和的最大值(二維)為:"+maxsum(a,2,2));

5455}56

57 }

程式執行結果如下:

求陣列的子陣列之和的最大值(二維)為:5.0

第2章 數字之魅 子陣列的最大乘積

給定乙個長度為n的整數陣列,只允許用乘法,不能用除法,計算任意 n 1 個數的組合乘積中最大的一組,並寫出演算法的時間複雜度。我們把所有可能的 n 1 個數的組合找出來,分別計算它們的乘積,並比較大小。由於總共有n個 n 1 個數的組合,總的時間複雜度為o n2 但顯然這不是最好的解法。具體 如下 ...

第2章 數字之魅 數字中的技巧2 2

問題1 求 n!末尾有多少個0。問題2 n!中二進位制表示中最低位1的位置。首先對於問題1 對於n!的末尾有多少個0這個問題。要追溯到算術基本定理 任何乙個大於1的自然數 n,都可以唯一分解成有限個質數的乘積 n p 1 a1 p 2 a2 p n an 這裡p 1質數 其諸方冪 ai 是正整數。m...

第2章 數字之魅 數字中的技巧2 1

法1 整型數觀念。二進位制中1在數中的體現,也就是當乙個數是奇數時最末位就是1。那麼我們可以將乙個數判斷是否是奇數。如果是就統計加1。並且 2 失去這一位。int count count 0 void count int num num 2 法1法2 從二進位制的角度。利用位運算。從二進位制的角度對...