劍指offer演算法-----矩形覆蓋
阿新 • • 發佈:2019-01-02
演算法描述:我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
分析與實現:由於是2*n的大矩形,同時這個矩形的長度不變,只有寬度n一直在變。
經過分析會發現覆蓋的方法其實和佔滿寬度n的方式一樣。所以這個問題就變成了類似如下問題:有一根長為n的繩子,每次切割長度是1或者2,問有多少種切割方法?(這其實和青蛙跳臺階是類似問題)
public int RectCover(int target) { if(target==1) return 1; if(target==2) return 2; int n1=1; int n2=2; int result=0; for(int i=3;i<=target;i++){ result=n1+n2; n1=n2; n2=result; } return result; }