#問題の意味
#説明
1)N列Aは、Bに移動する最初のn-1列によるc
2)C列の最大移動
3)、次いでN-1のカラムに通しBからCへ移動する
。4)最初に別の1に必要なステップの数に移動する
移動プレートの番号を移動5)は、n必要:2 ^ N-1を
#再帰
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 ボイド移動(INT M、文字 A、チャー B、チャーC) { 場合(M == 1 ) { のprintf(" %のC \ nと%Cから移動ディスク%のD " 、M、C)。 } 他{ 動き(M - 1 、C、B)。 printf(" %CからN \%Cへの移動、ディスク%のD " 、M、C)。 移動(M - 1 、B、C)。 } } int型のmain() { int型、nは scanf関数(" %のD "、&N) 移動(N、' A '、' B '、' C ' )。 リターン 0 ; }
#再発
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 CONST INT N = 1E5 + 10 。 INT F [N]。 int型のmain(){ int型、nは cinを >> N; F [ 1 ] = 1 。 以下のために(INT iが= 2 ; I <= N; I ++ ) F [I] = F [I- 1 ] * 2 + 1 。 COUT << F [N]。 }