回答編集履歴
3
僅か修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
バックトラックによる検索と結果の(ソート)表示は全く関係ありませんので、お互いのデータの持ち方さえ合わせれば、組み合わせは自由です。
|
2
2
|
|
3
|
-
以下は文字列として (
|
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(
|
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
修正
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
|
57
|
+
if(buf == NULL || buf_lastindex+(n+1) >= buf_size) {
|
58
58
|
buf_size += (N+1);
|
59
|
-
buf =
|
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
実行結果追加
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
|
```
|