문제 정보
백준 ( BOJ ) 15650 N과 M (2)
문제 풀이 : 수열
문제 출처 : https://www.acmicpc.net/problem/15650
시작 Thinking
문제 풀이
이 문제는 n과 m(1)
과 비슷해 보입니다. 구현방법도 비슷하니 둘이 한번 비교해 보면서 보시는걸 추천해요.
수도코드는 다음과 같습니다.
fun(k, s)
if ( k == end)
cout all
else
for ( i : s~max)
add i to list
fun(k+1,i+1)
변수가 하나 더 들어가서, 시작점을 고정시켜 주면 됩니다.
# 코드
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n, m;
int base;
vector<int> v(8, 0);
void fun(int roopedTime, int startPoint) {
if (roopedTime == m) {
for (int i = 0; i < m; i++) {
printf("%d ", v[i]+1);
}
printf("\n");
}
else {
for (int i = startPoint; i < n; i++) {
v[roopedTime] = i;
fun(roopedTime + 1,i+1);
}
}
}
int main() {
cin >> n >> m;
fun(0,0);
return 0;
}