teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記2

2019/12/13 07:23

投稿

2KOH
2KOH

スコア1001

answer CHANGED
@@ -6,4 +6,24 @@
6
6
  `solve1()` と `solve2()` の中の `continue` をすべて `break` に変えてください。
7
7
  理由は、~~説明するのが面倒くさい~~ロジックをよく考えればわかると思うので、ご自身でお考えください。
8
8
 
9
- ちなみに、`solve1()` の方は `continue` のままでも正常に動作しますが、ループ回数が 1回だけだからであり、たまたまうまく行っているだけです。
9
+ ちなみに、`solve1()` の方は `continue` のままでも正常に動作しますが、ループ回数が 1回だけだからであり、たまたまうまく行っているだけです。
10
+
11
+ ### 追記2
12
+ `break` に変えた上で、以下の行を追加してください(`solve1()` の方も同様に)。
13
+ ```c
14
+ void solve2() {
15
+ int i, j, k;
16
+
17
+ for (i = 0; i < 8; i++) {
18
+ for (j = 0; j < 2; j++) {
19
+ if (board[j] == i) break;
20
+ if (j - board[j] == 2 - i) break;
21
+ if (j + board[j] == 2 + i) break;
22
+ board[2] = i;
23
+ for (k = 0; k < 3; k++) printf("%d ", board[k]);
24
+ printf("\n");
25
+ }
26
+ if (k < 2) continue; // この行を追加。
27
+ }
28
+ }
29
+ ```

1

追記

2019/12/13 07:23

投稿

2KOH
2KOH

スコア1001

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