/**
* 功能:給你一堆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...