문제 링크 - https://www.acmicpc.net/problem/15652
[문제]

[풀이]
- N과 M(2) 문제는 중복없이 오름차순인 수열을 출력하는 문제였다.
- 이번 N과 M(4)문제는 비내림차순을 만족하면 되는데 이전 index의 수와 같거나 큰 수를 만족하면 된다. 즉, start를 통해 시작하는 숫자를 지정해주면서 중복 검사를 생략하면 된다.
- 이전 N과 M(2)의 코드에서 check[10]를 통해 중복검사 하는 부분을 빼주고, 다음 재귀함수로 넘어갈때 (중복이 가능하므로) start에 i+1이 아닌 i를 넣어주었다.
[코드]
#include <iostream>
using namespace std;
int check[10];
int arr[10];
void func(int index,int start, int n,int m){
if(index>m){
for(int i=1; i<=m; i++){
cout<<arr[i]<<" ";
}
cout<<"\n";
return;
}
for(int i=start; i<=n; i++){
arr[index]=i;
func(index+1,i,n,m);
}
}
int main(){
int n,m;
cin>>n>>m;
func(1,1,n,m);
}