[C言語]白準11729:ハノイタワー移動順
n開皇后を知るために、練習して追跡してみました.そこでYouTubeでBackTracking講座を探して、復帰練習に回るという結論に達しました.こうしてハノイタワーの練習をしました.
整理する
https://blog.encrypted.gg/943 Baking DogのYouTubeとブログで記事を精読しました.
まず、最も重要なのはまとめ方を考えることです.例えば、最初のドミノの骨牌を倒したら、2番目、3番目、4番目...最後まで気絶する
私たちは普通一つずつ行います.括弧があると次の順番に何を入れたらいいかわかりませんが….このような思想を捨てて、帰納して考えるべきだ.
再びドミノの骨牌1.2.3に戻ります...そうでなければ、k番目のドミノが倒れると、k+1個が倒れ、最後まで倒れる.そう思うべきだ.
ハノイの塔も同じ論理だ.
n基の塔があることを想像してみてください.a,b,cの柱(フィールド)があります.aにはn基の塔があり、cにはn基の塔がある.
では,b場所にn−1,c場所にnを置く.そして残りのb場所のn−1の塔をc場所に移す.終わりました.
コード#コード#
#include <stdio.h>
#include <math.h>
int hanoi(int a, int b, int n)
{
if (n == 1)
printf("%d %d\n", a, b);
else
{
hanoi(a, 6 - a - b, n - 1);
printf("%d %d\n", a, b);
hanoi(6 - a - b, b, n - 1);
}
}
int main()
{
int n;
int t;
scanf("%d", &n);
t = pow(2, n) - 1;
printf("%d\n", t);
hanoi(1, 3, n);
}
https://codevang.tistory.com/73ここに詳しい内容があります.簡単に言えば、n=1の場合、必要であれば1番場所と3番場所で出力して閉じます
n=2の場合、n-1個を2番の場所に移動し、hanoi(a,6-a-b,n-1);nを3番の場所に移動します.if(n=1)は,残りのn−1個を3番場所に移動する.hanoi(6 - a - b, b, n - 1);
もしあなたが分からないなら、ヴィティストに入ってみましょう.
https://www.youtube.com/watch?v=FYCGV6F1NuY&t=379s&ab_channel=%ED%8C%8C%EC%9D%B4%EC%8D%AC%ED%81%B4%EB%9E%98%EC%8A%A4
ビデオでうまく整理されています
Reference
この問題について([C言語]白準11729:ハノイタワー移動順), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmainsain/C언어-백준-11729-하노이-탑-이동-순서テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol