棧實現 漢諾塔 操作是否符合規範

2022-07-24 04:45:13 字數 1160 閱讀 4704

時間限制:3000 ms  |  記憶體限制:65535 kb

難度:3

描述在印度,有這麼乙個古老的傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸於盡。

現在我們把三根針編號為1,2,3。

所有的金片在初始時都在1號針上,現在給你的任務是判斷一系列的指令過程中,是否會出現非法的指令。

而非法指令有以下兩種情況:

1、某個針上已經沒有金片了,但是指令依然要求從該處移動金片到其它針上。

2、把乙個大的金片移動到了小的金片上。

輸入第一行輸入乙個整數n表示測試資料的組數(n<10)

每組測試資料的第一行有兩個整數p,q(1

輸出如果存在非法指令,請輸出illegal

不存在非法指令則輸出legal

樣例輸入

3

2 11 2

3 31 2

1 33 2

2 12 1

樣例輸出

legal

illegal

illegal

#include

#include

#include

using namespace std;

int main()

{int tim,p,q,k1,k2,flag=1;

cout<<"請輸入遊戲次數"<>tim;

while(tim--)

{cout<<"請輸入金片的 層數 和遊戲的 步數 "<>p>>q;

stack> s[4];

for(int i=p;i>0;i--) s[1].push(i); //進棧,編號大的對應**子

cout<<"第一根柱子的最上面的一片的編號 :"<0;i--)

{cout<<"請輸入移動次數 "<>k1>>k2; //將k1上的金片移動到k2上

if(s[k1].empty())

{cout<<"錯誤1"{cout<<"錯誤2"<

棧的應用 漢諾塔

2014年4月23日 漢諾塔 include brief 把第n個盤子從位置a移動到位置b param n 盤子的編號 param a 源位置 param b 目標位置 return void move int n,char a,char b brief 漢諾塔 param n 盤子的個數 para...

漢諾塔的實現

漢諾塔是大學遇見的第乙個使用遞迴的問題。這個問題的解決方法充分展示了遞迴給程式帶來的遍歷 如果不使用遞迴的話,那麼就需要細緻的分析。這裡不談非遞迴的解法。漢諾塔問題介紹 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時...

漢諾塔c 實現

用c 實現了漢諾塔,使用了遞迴,使用了上一次實現的堆疊這個資料結構來實現的漢諾塔,下面是 stack.h main.cpp stackdemo created by xin wang on 4 15 15.include class outofbounds 刪除定義的陣列 bool isempty ...