回答編集履歴

2

追記2

2019/12/13 07:23

投稿

2KOH
2KOH

スコア999

test CHANGED
@@ -15,3 +15,43 @@
15
15
 
16
16
 
17
17
  ちなみに、`solve1()` の方は `continue` のままでも正常に動作しますが、ループ回数が 1回だけだからであり、たまたまうまく行っているだけです。
18
+
19
+
20
+
21
+ ### 追記2
22
+
23
+ `break` に変えた上で、以下の行を追加してください(`solve1()` の方も同様に)。
24
+
25
+ ```c
26
+
27
+ void solve2() {
28
+
29
+ int i, j, k;
30
+
31
+
32
+
33
+ for (i = 0; i < 8; i++) {
34
+
35
+ for (j = 0; j < 2; j++) {
36
+
37
+ if (board[j] == i) break;
38
+
39
+ if (j - board[j] == 2 - i) break;
40
+
41
+ if (j + board[j] == 2 + i) break;
42
+
43
+ board[2] = i;
44
+
45
+ for (k = 0; k < 3; k++) printf("%d ", board[k]);
46
+
47
+ printf("\n");
48
+
49
+ }
50
+
51
+ if (k < 2) continue; // この行を追加。
52
+
53
+ }
54
+
55
+ }
56
+
57
+ ```

1

追記

2019/12/13 07:23

投稿

2KOH
2KOH

スコア999

test CHANGED
@@ -3,3 +3,15 @@
3
3
 
4
4
 
5
5
  なお、全部見たわけではないので、他にもバグがある可能性はあります。
6
+
7
+
8
+
9
+ ### 追記
10
+
11
+ `solve1()` と `solve2()` の中の `continue` をすべて `break` に変えてください。
12
+
13
+ 理由は、~~説明するのが面倒くさい~~ロジックをよく考えればわかると思うので、ご自身でお考えください。
14
+
15
+
16
+
17
+ ちなみに、`solve1()` の方は `continue` のままでも正常に動作しますが、ループ回数が 1回だけだからであり、たまたまうまく行っているだけです。