자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
i
를 넣었다면 다음 loop에서는 숫자 i + 1
부터 사용할 수 있었다면, 이제는 i
부터 사용할 수 있도록 하면 된다.#include <iostream>
using namespace std;
int n, m, a[8];
void solve(int idx, int num) {
if (idx == m) {
for (int i = 0; i < m; ++i) cout << a[i] << ' '; cout << '\n';
return;
}
for (int i = num; i <= n; ++i) {
a[idx] = i;
solve(idx + 1, i); // i + 1이면 오름차순, i니까 비내림차순.
}
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
solve(0, 1);
}
#include <iostream>
using namespace std;
int n, m, a[8];
void solve(int num, int cnt) {
if (cnt == m) {
for (int i = 0; i < m; ++i) cout << a[i] << ' '; cout << '\n';
return;
}
if (num > n) return;
a[cnt] = num;
solve(num, cnt + 1); // num을 선택하는 경우
solve(num + 1, cnt); // num을 선택하지 않는 경우
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
solve(1, 0);
}