#include <stdio.h> #include <stdlib.h> #define PLATE_MAX 50 //원판 최대 개수 struct { int plate[PLATE_MAX];//판 int plate_num;//판의 끝을 가르키는 값 } pole[3];//기둥 3개 //기둥 구조체 배열 선언 void printTower() { //기둥과 원판 모두 출력 int i, j; for(i=0;i<3;i++) { printf("%d: ",i);//번호출력 if( pole[i].plate_num==0) printf("x"); //기둥에 원판이 없을 경우 x 출력 else { for(j=0;j<pole[i].plate_num;j++) { printf("%d ",pole[i].plate[j]);//plate 출력 } } printf("n"); } } int move(int startpole,int endpole) { if(startpole<0||startpole>2||endpole<0||endpole>2)//범위 밖이면 나가기 { exit(0); } else if( pole[endpole].plate[pole[endpole].plate_num]>=pole[startpole].plate[pole[startpole].plate_num-1])//요소 검사 { //return 0; } else{ pole[endpole].plate[pole[endpole].plate_num]=pole[startpole].plate[pole[startpole].plate_num-1];//대입 pole[startpole].plate[pole[startpole].plate_num]=0;//0으로 만들기 pole[startpole].plate_num-=1;//-1을 하기(판의 끝을 바꾸기) pole[endpole].plate_num+=1;//+1을 하기(판의 끝을 바꾸기) return 0; } } int main() { int b; int c,d; for(int i=0;i<3;i++) { pole[i].plate_num=0;//plate_num 초기화 } scanf("%d",&b);//입력받기 pole[0].plate_num=b;//plate_num 입력받기 for(int i=pole[0].plate_num;i>0;i--) { pole[0].plate[pole[0].plate_num-i]=i;//대입하 } printTower(); while(1) { scanf("%d %d",&c,&d);//입력하기 move(c,d);//옮기기 printTower(); } return 0; }
else if( pole[endpole].plate[pole[endpole].plate_num-1]>=pole[startpole].plate[pole[startpole].plate_num-1])
{
return 0;
}

하노이탑 풀고 있음

이 코드에서 pole[1].plate[0]에는 처음 초기화 할 때 넣은 숫자가 항상 있는데 왜 그런거임?

그리고 move 함수에서
else if( pole[endpole].plate[pole[endpole].plate_num-1]>=pole[startpole].plate[pole[startpole].plate_num-1]) { return 0; } 이부분이 제대로 처리가 안됨 도와주세요ㅠㅠ