[伯俊/c+]15649号NとM(1)
15649問題リンク
自然数NとMが与えられた場合、以下の条件を満たすすべての長さMの数列を解くプログラムを作成します.1からNまで、自然水体中でM個の数列 を繰り返し選択する.
第1行は自然数NとMを与える.(1 ≤ M ≤ N ≤ 8)
各行に問題条件を満たす数列を出力します.重複する数列は複数回出力できません.各数列はスペースで区切らなければなりません.
数列は予め増加した順序で出力しなければならない.
10947番すべてのシーケンスと解題方法はほぼ似ています.コードでインデックスを比較し、配列の値を出力する条件は、次のとおりです.
質問する
自然数NとMが与えられた場合、以下の条件を満たすすべての長さMの数列を解くプログラムを作成します.
入力
第1行は自然数NとMを与える.(1 ≤ M ≤ N ≤ 8)
しゅつりょく
各行に問題条件を満たす数列を出力します.重複する数列は複数回出力できません.各数列はスペースで区切らなければなりません.
数列は予め増加した順序で出力しなければならない.
に答える
10947番すべてのシーケンスと解題方法はほぼ似ています.コードでインデックスを比較し、配列の値を出力する条件は、次のとおりです.
if (idx == N)
からif (idx == M)
に変更すればいいです.ソースコード
#include <stdio.h>
#include <iostream>
using namespace std;
int N;
int M;
int visited[9];
int output[9];
void permutation(int idx) {
if (idx == M) {
for(int i=0; i<M; i++) {
cout << output[i] << " ";
}
cout << '\n';
}
for(int i=0;i<N;i++) {
if (visited[i] != true) {
visited[i] = true;
output[idx] = i+1;
permutation(idx+1);
visited[i] = false;
}
}
}
int main() {
cin >> N >> M;
permutation(0);
}
正解
Reference
この問題について([伯俊/c+]15649号NとM(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@soyeon207/백준c-15649번-N과-M-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol