PTA_데이터 구조 와 알고리즘7 - 17 한 노 타의 비 귀속 실현 (25 점)
입력 형식: 시작 기둥 의 디스크 수 를 정수 N 으로 입력 하 십시오.
출력 형식: 모든 작업 (이동) 이 한 줄 을 차지 하고
1 -> 2
의 형식 으로 출력 합 니 다.입력 예시:
3
출력 예시:
a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c
코드:
#include
#define MaxSize 100
typedef struct{//
int N;//
char A;//
char B;//
char C;//
} ElementType;
typedef struct{//
ElementType Data[MaxSize];
int Top;
}Stack;
void Push(Stack *PtrS, ElementType item);//
ElementType Pop(Stack *PtrS);//
void Hanoi(int n);//
int main()
{
int n;
scanf("%d",&n);
Hanoi(n);
return 0;
}
void Hanoi(int n){
ElementType P, toPush;//P ( ),toPush (N-1 1, N-1 )
Stack S;
P.N = n; P.A = 'a'; P.B = 'b'; P.C = 'c';
S.Top = -1;
Push(&S, P);
while(S.Top!=-1){
P = Pop(&S);// , , 1
if(P.N==1) printf("%c -> %c
",P.A, P.C);//N 1
else{
toPush.N = P.N - 1;
toPush.A = P.B; toPush.B = P.A; toPush.C = P.C;// 2: N-1
Push(&S, toPush);// 2
toPush.N = 1;
toPush.A = P.A; toPush.B = P.B; toPush.C = P.C;// 1
Push(&S, toPush);//
toPush.N = P.N - 1;
toPush.A = P.A; toPush.B = P.C; toPush.C = P.B;// 1: N-1
Push(&S, toPush);// 1
}
}
}
void Push(Stack *PtrS, ElementType item){
PtrS->Data[++(PtrS->Top)] = item;
return;
}
ElementType Pop(Stack *PtrS){
PtrS->Top--;
return(PtrS->Data[PtrS->Top+1]);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.