分支遞迴 Fractal

2021-10-24 05:51:40 字數 914 閱讀 8107

題目大意:題目大意是比較明顯的,輸入乙個數n,按題目示意輸出相應的圖形。

題目解法:分形,用dfs以及遞迴。輸出圖形的方式是最後一塊輸出,建立maps陣列,然後更改maps陣列,最後輸出maps陣列就可以了。首先計算一共有多少行列,初始化maps。然後我們可以把b(n)的圖形分為五部分,分別是左上、右上、中心、左下、右下五部分,可以知道這五部分的圖形都是b(n-1),所以遞迴就來了,我們在畫b(n)圖形的時候可以通過在這五部分畫b(n-1)的影象來實現,同樣在畫b(n-1)的時候可以通過畫b(n-2)的圖形來實現,最後直到畫b(1)的影象,然後return,最後maps即更新為結果。

題目**

#include

char maps[

1010][

1010];

intx3

(int n)

return ans;

}void

dfs(

int n,

int x,

int y)

int d=

x3(n-2)

;dfs

(n-1

,x,y)

;dfs

(n-1

,x,y+

2*d)

;dfs

(n-1

,x+d,y+d)

;dfs

(n-1

,x+2

*d,y)

;dfs

(n-1

,x+2

*d,y+

2*d);}

intmain()

printf

("-\n");

}return0;

}

POJ 2083 Fractal(經典遞迴)

題目鏈結 比較經典的題,但是自己沒寫出來,有必要反思一下。圖案的遞迴其實比較容易的,關鍵是如何輸出空格,如果把空格當成另外的分塊,換行又沒辦法解決 其實這裡的處理方法很巧妙,先將最大範圍內填充空格,使用fil l fill fill 然後設dfs cur x,y dfs cur,x,y dfs cu...

Fractal (第一場 遞迴與回溯)

分形遞迴 進三個變數,n和橫縱座標 d是圖形每次變換的長度,每次座標定位到左上角,分成左上,左下,右上,右下,中。可知,左上座標不變,右上橫座標加兩個圖形長度,縱座標不變。同理,其它位置也可以模擬出來。邊界條件是n 1,只有 x intf int n,int x,int y else 冪函式 int...

poj3845 Fractal(座標旋轉)

傳送門 題意 給一條折線,每一次操作把這條折線的所有線段變換成跟這條折線的相同形狀,重複d次。問此時從頭到尾走全長的f 0 f 1 將停在哪個點上。題解 首先計算出每次變換線段增長的倍數 k 那麼線段會增長kd 若當前線段增長後已經超出了所剩餘的長度,就相當於確定變換後的直線在當前線段上,那麼遞迴k...