poj 2275 模擬(翻轉漢諾塔)

2021-06-29 15:26:42 字數 393 閱讀 8716

題意:給定1~n的乙個排列,能做的動作是逆轉第1~第m個數,給出一種方案使數列變成1~n。

思路:簡單模擬,之所以簡單是因為不是求最少的運算元,而是給出一種方案即可。可是我還是貢獻了wa,因為理解錯了題意。題目中flip是指逆轉第1~第m的序列,而我理解成了交換第1和第m個數,orz。每次將最大的不在最終位置的數移動回去即可~

#include #include using namespace std;

#define n 35

int s[n],n,res[n<<1];

int main()

res[len++] = i;

reverse(&s[1], &s[i+1]);}}

printf("%d ",len);

for(i = 0;i

漢諾塔 模擬

古老的漢諾塔問題是這樣的 用最少的步數將n個半徑互不相等的圓盤從1號柱利用2號柱全部移動到3號柱,在移動的過程中小盤要始終在 的上面。現在再加上乙個條件 不允許直接把盤從1號柱移動到3號柱,也不允許直接把盤從3號柱移動到1號柱。把盤按半徑從小到大用1到n編號。每種狀態用n個整數表示,第i個整數表示i...

93 漢諾塔(三) 模擬

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

陣列模擬漢諾塔問題

includeint step 0 全域性變數step用於統計步數 int main int mid 5 right 5 用三個陣列模擬三個柱子,5個數字表示由大到小的5個盤子 int steps int hanoi com int n,int a 5 int b 5 int c 5 steps h...