15649:NとM(1)
何の問題ですか。
バックグラウンドトラッキングの問題を使用します.
これはいったい何なのか。
初めて問題を解いた時、何なのかわからない部分がありました.
初めて問題を解いた時、何なのかわからない部分がありました.
うん。その概念。
まず私のコードではありません.まず他人のコードを引用する.#include <stdio.h>
int r[8], n, m, v[9];
void recur(int k) {
int i;
if (k == m) {
for (i = 0 ; i < m ; i++) printf("%d ", r[i]);
printf("\n");
return;
}
for (i = 1 ; i <= n ; i++) {
if (!v[i]) {
v[i] = 1, r[k] = i;
recur(k + 1);
v[i] = 0;
}
}
}
int main() {
scanf("%d%d", &n, &m);
recur(0);
}
gooooraのコード
-> https://www.acmicpc.net/source/8974737
backtrackingは、通常のDFSに2種類追加されます.
条件文
#include <stdio.h>
int r[8], n, m, v[9];
void recur(int k) {
int i;
if (k == m) {
for (i = 0 ; i < m ; i++) printf("%d ", r[i]);
printf("\n");
return;
}
for (i = 1 ; i <= n ; i++) {
if (!v[i]) {
v[i] = 1, r[k] = i;
recur(k + 1);
v[i] = 0;
}
}
}
int main() {
scanf("%d%d", &n, &m);
recur(0);
}
2つ目は最も重要です上のコードのv[i]=0の部分がその部分です.
投稿の参照
Reference
この問題について(15649:NとM(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@qoo0302/15649-N과-M-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol