개발자/문제풀이 (C언어)
[백준/BOJ] 15651번 N과 M (3) (C/C++)
devBB
2024. 1. 22. 21:54
728x90
반응형
백준 온라인 저지(BOJ) 15651번 N과 M (3)
https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
* 사용언어 : C언어, C++
1. 문제
N개의 수에서 M개의 숫자를 뽑아 나열하는 모든 경우를 출력 (숫자 중복 허용)
2. 풀이
앞서 풀이한 N과 M (1) 문제에서 visited 배열 처리만 없애주면 됩니다. (중복이 가능하므로)
15649번 보다 훨씬 쉬운 문제이기 때문에 (1)과 (3)의 순서가 반대면 더 좋았을 것 같습니다.
https://rightbellboy.tistory.com/307
[백준/BOJ] 15649번 N과 M (1) (C/C++)
백준 온라인 저지(BOJ) 15649번 N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열
rightbellboy.tistory.com
3. 코드
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
15650_N과 M (3)
1112KB 484ms
*/
#include <cstdio>
const int LM = 7;
int arr[LM], N, M;
void permutation(int idx) {
if (idx == M) {
for (int i = 0; i < M; ++i) printf("%d ", arr[i]);
printf("\n");
return;
}
for (int i = 1; i <= N; ++i) {
arr[idx] = i;
permutation(idx + 1);
}
}
int main() {
#ifdef _WIN32
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d %d", &N, &M);
permutation(0);
return 0;
}
728x90
반응형