9 9遞迴和動態規劃(十) 堆箱子

2021-07-04 14:12:15 字數 922 閱讀 9051

/**

* 功能:給你一堆n個箱子,箱子寬wi,高hi,深di。箱子不能翻轉,將箱子堆起來時,下面箱子的寬度、高度和深度必須大於上面的箱子。

* 實現方法:搭出最高的一堆箱子,箱子堆的高度為每個箱子高度的總和。

兩種方法:

方法一:遞迴法

//遞迴法

public static arraylistcreatestackr(box boxes,box bottom)

}}

if(maxstack==null)

maxstack=new arraylist();

if(bottom!=null)

maxstack.add(0,bottom);

return maxstack; }

public static int stackheight(arrayliststack)

}}

if(maxstack==null)

maxstack=new arraylist();

if(bottem!=null)

maxstack.add(0, bottem);

stackmap.put(bottem, maxstack);

/*** 方法clone()來自object類,其方法簽名如下:重寫方法時,可以調整引數,但不得改動返回型別。

* 因此,如果繼承自object的類重寫了clone()方法,它的clone()方法仍將返回object例項。因此必須轉型返回值。

*/return (arraylist) maxstack.clone();//返回副本

}public static int stackheight(arrayliststack)

public boolean canbeabove(box box)

}

9 9遞迴和動態規劃(九) N皇后

功能 列印八皇后在8 8棋盤上的各種擺法,其中每個皇后都不同行 不同列,也不在對角線上。這裡的 對角線 指的是所有的對角線,不只是平分整個棋盤的那兩條對角線。static int grid size 8 思路 每一行只能擺放乙個皇后,因此不需要將棋盤儲存為完整的8 8矩陣,只需一維陣列,其中colu...

遞迴和動態規劃

暴力遞迴 1,把問題轉化為規模縮小了的同類問題的子問題 2,有明確的不需要繼續進行遞迴的條件 base case 3,有當得到了子問題的結果之後的決策過程 4,不記錄每乙個 子問題的解 動態規劃 1,從暴力遞迴中來 2,將每乙個子問題的解記錄下來,避免重複計算 3,把暴力遞迴的過程,抽象成了狀態表達...

遞迴和動態規劃 整數和

給你乙個陣列arr,和乙個整數aim。如果可以任意選擇arr中的數字,能不能累加得到aim,返回true或者false 類似於字串的子串,陣列中的每個數字都可以在求和結果中,也可以不在 所以使用遞迴可以求得 public static boolean issum int arr,int aim pu...