#BOJ 15654 NおよびM(5)
2625 ワード
NとM(5)
( https://www.acmicpc.net/problem/15654 )
N個の自然数とM個の自然数が与えられた場合、以下の条件を満たす長さMのすべての数列を求めるプログラムを作成します.N個の自然数はいずれも異なる数である.
N個の自然数の中からM個の数列を選択
入力
1行目はNとMです.(1 ≤ M ≤ N ≤ 8)
2行目にはN個の数字があります.10,000以下の自然数を入力します.
しゅつりょく
各行に問題条件を満たす数列を出力します.重複する数列は複数回出力できません.各数列はスペースで区切らなければなりません.
数列は予め増加した順序で出力しなければならない.
入力例1
3 1
4 5 2
サンプル出力1
2
4
5
入力例2
4 2
9 8 7 1
サンプル出力2
1 7
1 8
1 9
7 1
7 8
7 9
8 1
8 7
8 9
9 1
9 7
9 8
入力例3
4 4
1231 1232 1233 1234
サンプル出力3
1231 1232 1233 1234
1231 1232 1234 1233
1231 1233 1232 1234
1231 1233 1234 1232
1231 1234 1232 1233
1231 1234 1233 1232
1232 1231 1233 1234
1232 1231 1234 1233
1232 1233 1231 1234
1232 1233 1234 1231
1232 1234 1231 1233
1232 1234 1233 1231
1233 1231 1232 1234
1233 1231 1234 1232
1233 1232 1231 1234
1233 1232 1234 1231
1233 1234 1231 1232
1233 1234 1232 1231
1234 1231 1232 1233
1234 1231 1233 1232
1234 1232 1231 1233
1234 1232 1233 1231
1234 1233 1231 1232
1234 1233 1232 1231
インプリメンテーション
( https://www.acmicpc.net/problem/15654 )
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 512 MB 14605 10679 8519 72.930%
質問するN個の自然数とM個の自然数が与えられた場合、以下の条件を満たす長さMのすべての数列を求めるプログラムを作成します.N個の自然数はいずれも異なる数である.
N個の自然数の中からM個の数列を選択
入力
1行目はNとMです.(1 ≤ M ≤ N ≤ 8)
2行目にはN個の数字があります.10,000以下の自然数を入力します.
しゅつりょく
各行に問題条件を満たす数列を出力します.重複する数列は複数回出力できません.各数列はスペースで区切らなければなりません.
数列は予め増加した順序で出力しなければならない.
入力例1
3 1
4 5 2
サンプル出力1
2
4
5
入力例2
4 2
9 8 7 1
サンプル出力2
1 7
1 8
1 9
7 1
7 8
7 9
8 1
8 7
8 9
9 1
9 7
9 8
入力例3
4 4
1231 1232 1233 1234
サンプル出力3
1231 1232 1233 1234
1231 1232 1234 1233
1231 1233 1232 1234
1231 1233 1234 1232
1231 1234 1232 1233
1231 1234 1233 1232
1232 1231 1233 1234
1232 1231 1234 1233
1232 1233 1231 1234
1232 1233 1234 1231
1232 1234 1231 1233
1232 1234 1233 1231
1233 1231 1232 1234
1233 1231 1234 1232
1233 1232 1231 1234
1233 1232 1234 1231
1233 1234 1231 1232
1233 1234 1232 1231
1234 1231 1232 1233
1234 1231 1233 1232
1234 1232 1231 1233
1234 1232 1233 1231
1234 1233 1231 1232
1234 1233 1232 1231
インプリメンテーション
/*
BOJ : https://www.acmicpc.net/problem/15654
backtracking N과 M(5)
Versatile0010
*/
#include <bits/stdc++.h>
using namespace std;
int n, m; // N 개의 자연수 중에서 M 개를 고른 수열
int arr[10];
vector<int> input_arr;
bool isused[10];
void solve(int k)
{
if (k == m)
{
for (int i = 0; i < m; i++)
cout << arr[i] << ' ';
cout << '\n';
return;
}
else
{
for (int i = 0; i < n; i++)
{
if (!isused[i])
{
arr[k] = input_arr[i];
isused[i] = true;
solve(k + 1);
isused[i] = false;
}
}
}
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
input_arr.push_back(temp);
}
sort(input_arr.begin(), input_arr.end());
solve(0);
return 0;
}
GIT : https://github.com/versatile0010/PS/blob/main/Backtracking/BOJ%2015654%20N%EA%B3%BC%20M(5).cppReference
この問題について(#BOJ 15654 NおよびM(5)), 我々は、より多くの情報をここで見つけました https://velog.io/@versatile0010/BOJ-15654-N과-M5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol