NYOJ1078 漢諾塔(四)

2021-08-11 02:01:49 字數 879 閱讀 9216

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:2 描述

漢諾塔問題是乙個經典的問題,現在我們有 n 個柱子和 m 個編號(1~m)的球,我們現在要求把盡量多的球放在盡量少的柱子上,如果相鄰兩個球的和不是完全平方數的話球會相互排斥而無法接觸。(注意:球必須從小到大放,每次只能放在其他球的上面或者乙個新的柱子上面)

輸入

首先乙個t,表示t組測試資料,然後乙個n(1<=n<=50).

輸出輸出一行,表示n個柱子能放的最大的球編號。

樣例輸入

1

4

樣例輸出

11

相鄰兩個球的和不是完全平方數的話球會相互排斥而無法接觸,也就是說每個柱子最上面兩個球的編號相加必須是某個數的平方;

在放球的時候,就需要考慮,這個球是否能與一些柱子最上面的球編號組成完全平方數,如果不能就只能把這個球放在新的柱子上。

#includeint solve(int n) 

} return flag;

}int main() , num, b = 1, count = 0;//a陣列存放各個柱子最上面的球號 

scanf("%d", &n);

for(num = 1; ; num++)  

else if(solve(a[i] + num))

if(i == n-1) count = num - 1;//已經沒有新柱子了,記錄能放的最大的球編號 

}if(count) break;

}printf("%d\n", count);

}} //附上公式:(n*n-1)/2+n 

nyoj 漢諾塔(一)

漢諾塔 一 描述 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片 一次只移動一片,不管...

NYOJ 漢諾塔(一)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧...

四柱漢諾塔

多柱漢諾塔的解析 題目鏈結 分析 現在有四根柱子a b c d,我們假設盤子從a移動到d,先把a的n個盤子拿出r個借助其他兩個柱子放到b上這是f n r 接著這個柱子就先不動,然後開始動a上剩下的r個盤子,現在b已經不能放這r個,我們只能通過c柱子把r個移動到d上去。這裡只用到了c柱子和目標柱子,所...