알고리즘
[C++] Boj 15651 N과 M (3)
(ꐦ •᷄ࡇ•᷅)
2025. 1. 21. 15:11
문제 링크
접근
기존 N과 M 문제와 달리 중복으로 뽑는 것을 허용하는 문제이다. 따라서 백트래킹을 실시할 때 중복 체크를 하지 않았다.
코드
#include <iostream>
using namespace std;
// N개 중에서, M개 뽑음
int N, M;
// n번째로 뽑은 수를 저장
int numbers[10];
// k 번째로 저장할 수를 탐색
void Solve(int k)
{
if (k == M)
{
for (int i = 0; i < M; i++)
cout << numbers[i] << ' ';
cout << '\n';
return;
}
for (int i = 0; i < N; i++)
{
numbers[k] = i + 1;
Solve(k + 1);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> N >> M;
Solve(0);
return 0;
}
