nyoj 63 小猴子下落 二叉樹

2021-07-11 05:57:46 字數 990 閱讀 3769

根據右圖測試資料可知,一共有n行(3,4,5),x個猴子中每2^n出現一迴圈,理由就是它是滿二叉樹。

根據左圖四層我們列出資料看看:

第1只猴子12

48第2只猴子13

612第3只猴子12

510第4只猴子13

714第5只猴子12

49第6只猴子13

613第7只猴子12

511第8只猴子13

715請讀者看看四層二叉樹(上左圖)和上表中對比不難發現,進入第n個結點的次數i為奇數(即前面已有n-1過猴子訪問過該結點),那麼遍歷其左子樹根;

若為偶數,則遍歷其右子樹根。

因此,對照上表,得出規律:i為奇數,k=k*2;i=(i+1)/2;//第i個進入左子樹

i為偶數,k=k*2+1;i=i/2; //第i個進入右子樹

例如第1個猴子:則對於第乙個結點來說,i=1為奇數,那麼下乙個要走的結點k=1*2=2;然後i=(1+1)/2=1(第乙個進入左子樹),繼續判斷其左子樹i的奇偶性……

第3個猴子:則對於第乙個結點來說,i=3為奇數,那麼下乙個要走的結點k=1*2=2;然後i=(3+1)/2=2(第二個進入左子樹)……

第5個猴子:則對於第乙個結點來說,i=5為奇數,那麼下乙個要走的結點k=1*2=2;然後i=(5+1)/2=3(第三個進入左子樹)……

code:

#includeusing namespace std;

int main()

{ int d,i,k;

while(cin>>d>>i && (d+i) !=0)

{k=1;

for (int j=0;j

NYOJ63 小猴子下落 二叉樹性質

有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全部關閉,當每次有小猴子跑到乙個開關上時,它的狀態都會改變,當到達乙個內結點時,如果開關關閉,小猴子往左走,否則往右走,直...

nyoj63小猴子下落 二叉樹推導

時間限制 3000 ms 記憶體限制 65535 kb 難度 3描述 有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全部關閉,當每次有小猴子跑到乙個開關上時,它的狀態都...

NYOJ 63 小猴子下落

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全部關閉,當每次有小猴子跑到乙個開關上時,它的狀態...