#include
#include
#define PLATE_MAX 50
//원판 최대 개수
struct {
int plate[PLATE_MAX];
int plate_num;
} pole[3];
//기둥 구조체 배열 선언
void printTower() {
//기둥과 원판 모두 출력
int i, j;
for(i=0;i
printf("%d: ",i);
if( pole[i].plate_num==0) printf("x");
//기둥에 원판이 없을 경우 x 출력
else {
for(j=0;j
{
printf("%d ",pole[i].plate[j]);
}
}
printf("\n");
}
}
int move(int startpole,int endpole) {
if(startpole2||endpole2)
{
exit(0);
}
else if( pole[endpole].plate[pole[endpole].plate_num-1]>=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;
pole[startpole].plate_num-=1;
pole[endpole].plate_num+=1;
return 0;
}
}
int main()
{
int b;
int c,d;
for(int i=0;i
{
pole[i].plate_num=0;
}
scanf("%d",&b);
pole[0].plate_num=b;
for(int i=b;i>0;i--)
{
pole[0].plate[b-i]=i;
}
printTower();
while(1)
{
scanf("%d %d",&c,&d);
move(c,d);
printTower();
}
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;
}
이부분이 제대로 처리가 안됨
도와주세요ㅠㅠ
https://nanikit.github.io/dc-highlighter/
이걸로 색칠좀 해오셈
https://gall.dcinside.com/mgallery/board/view/?id=github&no=3619&page=1
문제 해결