[%]
색칠버전
익명(125.138)
2019-10-12 17:14
추천 0
#include <stdio.h>
#include <stdlib.h>
#define PLATE_MAX 50
struct {
int plate
[PLATE_MAX
];
int plate_num
;
} pole
[3];
void printTower() {
int i
, j
;
for(i
=0;i
<3;i
++) {
printf("%d: ",i
);
if( pole
[i
].plate_num
==0) printf("x");
else {
for(j
=0;j
<pole
[i
].plate_num
;j
++)
{
printf("%d ",pole
[i
].plate
[j
]);
}
}
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])
{
}
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
<3;i
++)
{
pole
[i
].plate_num
=0;
}
scanf("%d",&b
);
pole
[0].plate_num
=b
;
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;
}
이부분이 제대로 처리가 안됨
도와주세요ㅠㅠ
색칠을 요구한 파딱은 인덴트가 날아갔다고 생각했겠지만 원본이 그러했다고 한다
ㅋㅋㅋㅋㅋㅋㅋ
차라리 pastebin으로 해주쇼