回答編集履歴
2
スペースを削除
answer
CHANGED
@@ -6,17 +6,17 @@
|
|
6
6
|
#include <stdlib.h>
|
7
7
|
#include <string.h>
|
8
8
|
void print(char** t,int n,char **o){
|
9
|
-
int i,
|
9
|
+
int i,j;
|
10
10
|
for(j=0;j<3;j++){
|
11
11
|
printf("%s:",o[j]);
|
12
|
-
for(i=n-1;i>=0;i--) if(t[i]
|
12
|
+
for(i=n-1;i>=0;i--) if(t[i]==o[j]) printf(" %d",i+1);
|
13
13
|
printf("\n");
|
14
14
|
}
|
15
15
|
printf("-----\n");
|
16
16
|
}
|
17
17
|
void move(int r,char *x,char *y,char *z,char **t,int n,char **o){
|
18
18
|
if(r>=2) move(r-1,x,z,y,t,n,o);
|
19
|
-
t[r-1]
|
19
|
+
t[r-1]=z; //r番をzに移動
|
20
20
|
print(t,n,o);
|
21
21
|
if(r>=2) move(r-1,y,x,z,t,n,o);
|
22
22
|
}
|
1
不要なパラメータを削除
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
#include <stdio.h>
|
6
6
|
#include <stdlib.h>
|
7
7
|
#include <string.h>
|
8
|
-
void print(char
|
8
|
+
void print(char** t,int n,char **o){
|
9
9
|
int i, j;
|
10
10
|
for(j=0;j<3;j++){
|
11
11
|
printf("%s:",o[j]);
|
@@ -17,7 +17,7 @@
|
|
17
17
|
void move(int r,char *x,char *y,char *z,char **t,int n,char **o){
|
18
18
|
if(r>=2) move(r-1,x,z,y,t,n,o);
|
19
19
|
t[r-1] = z; //r番をzに移動
|
20
|
-
print(
|
20
|
+
print(t,n,o);
|
21
21
|
if(r>=2) move(r-1,y,x,z,t,n,o);
|
22
22
|
}
|
23
23
|
void hanoi(int n,char *x,char *y,char *z){
|
@@ -25,7 +25,7 @@
|
|
25
25
|
char *o[3]; o[0]=x; o[1]=y; o[2]=z; //表示用
|
26
26
|
char **t=(char **)malloc(sizeof(char*)*n); //各円盤の位置
|
27
27
|
for(i=0;i<n;i++) t[i]=x;
|
28
|
-
print(
|
28
|
+
print(t,n,o);
|
29
29
|
move(n,x,y,z,t,n,o);
|
30
30
|
free(t);
|
31
31
|
}
|