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

回答編集履歴

3

僅か修正

2021/12/17 08:39

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  バックトラックによる検索と結果の(ソート)表示は全く関係ありませんので、お互いのデータの持ち方さえ合わせれば、組み合わせは自由です。
2
2
 
3
- 以下は文字列として (malloc した )buf に保存する形です。
3
+ 以下は文字列として (alloc した )buf に保存する形です。
4
4
  ```c
5
5
  #include <stdio.h>
6
6
  #include <stdlib.h>
@@ -43,7 +43,7 @@
43
43
  }
44
44
  }
45
45
  }
46
- //ソートして表示
46
+ //ソートして表示(して開放)
47
47
  void sort_and_print() {
48
48
  if(buf == NULL) return;
49
49
  char *paths[buf_strcount];
@@ -54,7 +54,7 @@
54
54
  }
55
55
  //文字列化して保存
56
56
  void store_path(int n) {
57
- if(buf == NULL || buf_lastindex+(n+1) >= buf_size) {
57
+ if(buf_lastindex+(n+1) >= buf_size) {
58
58
  buf_size += (N+1);
59
59
  buf = realloc(buf, buf_size); //buf=NULL なら malloc 同等
60
60
  if(buf == NULL) exit(1); //拡張できなかったら(行儀悪く)即終了

2

修正

2021/12/17 08:39

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -54,9 +54,10 @@
54
54
  }
55
55
  //文字列化して保存
56
56
  void store_path(int n) {
57
- if(buf == NULL || buf_lastindex+(n+1) >= buf_size-1) {
57
+ if(buf == NULL || buf_lastindex+(n+1) >= buf_size) {
58
58
  buf_size += (N+1);
59
- buf = buf == NULL ? malloc(buf_size) : realloc(buf, buf_size);
59
+ buf = realloc(buf, buf_size); //buf=NULL なら malloc 同等
60
+ if(buf == NULL) exit(1); //拡張できなかったら(行儀悪く)即終了
60
61
  }
61
62
  for(int i=0; i<n; i++) buf[buf_lastindex++] = 'A'+(path[i]-1);
62
63
  buf[buf_lastindex++] = 0; //End Of String

1

実行結果追加

2021/12/15 15:28

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -96,4 +96,11 @@
96
96
  sort_and_print();
97
97
  return 0;
98
98
  }
99
+ ```
100
+ 実行結果
101
+ ```plain
102
+ ACEG
103
+ ABCEG
104
+ ABDEG
105
+ ACBDEG
99
106
  ```