回答編集履歴

4

コード更新

2020/06/12 15:11

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -50,11 +50,9 @@
50
50
 
51
51
 
52
52
 
53
- int f = 0, t = 0;
53
+ int f = 0; while (tower[from][f] == '.') f++;
54
54
 
55
- while (tower[from][f] == '.') f++;
56
-
57
- while (tower[to][t + 1] == '.') t++;
55
+ int t = 0; while (tower[to][t + 1] == '.') t++;
58
56
 
59
57
  tower[to][t] = tower[from][f];
60
58
 

3

動作プログラム追記

2020/06/12 15:11

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -27,3 +27,71 @@
27
27
  printf("%s %s %s\n", tower[0], tower[1], tower[2]);
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ 動作プログラムを書いておきます。
34
+
35
+
36
+
37
+ ```c
38
+
39
+ #include <stdio.h>
40
+
41
+
42
+
43
+ char tower[3][10];
44
+
45
+
46
+
47
+ void hanoi(int n, int from, int buffer, int to) {
48
+
49
+ if (n > 1) hanoi(n - 1, from, to, buffer);
50
+
51
+
52
+
53
+ int f = 0, t = 0;
54
+
55
+ while (tower[from][f] == '.') f++;
56
+
57
+ while (tower[to][t + 1] == '.') t++;
58
+
59
+ tower[to][t] = tower[from][f];
60
+
61
+ tower[from][f] = '.';
62
+
63
+ printf("%s %s %s\n", tower[0], tower[1], tower[2]);
64
+
65
+
66
+
67
+ if (n > 1) hanoi(n - 1, buffer, from, to);
68
+
69
+ }
70
+
71
+
72
+
73
+ int main(void) {
74
+
75
+ int N;
76
+
77
+ scanf("%d", &N);
78
+
79
+ for (int i = 0; i < N; i++) {
80
+
81
+ tower[0][i] = '0' + i;
82
+
83
+ tower[1][i] = '.';
84
+
85
+ tower[2][i] = '.';
86
+
87
+ }
88
+
89
+ printf("%s %s %s\n", tower[0], tower[1], tower[2]);
90
+
91
+ hanoi(N, 0, 1, 2);
92
+
93
+ return 0;
94
+
95
+ }
96
+
97
+ ```

2

表現変更

2020/06/12 14:16

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,4 @@
1
- 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力できるようにしちゃいます。
1
+ 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力しちゃいます。
2
2
 
3
3
 
4
4
 

1

エスケープ

2020/06/12 08:59

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,4 @@
1
- 私なら、文字配列にして終端に `'\0'` を置いて "%s" で文字列出力できるようにしちゃいます。
1
+ 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力できるようにしちゃいます。
2
2
 
3
3
 
4
4