문제
풀이
N과 M (1) 에서 중복을 허용한 문제이다.
N과 M (1) 코드에서 check 배열을 통한 중복확인을 빼면 된다.
아래 링크의 풀이 참고
문제점
재귀 함수를 사용할 경우 직접 손으로 써보면서 확인을 해보는 습관을 가져야 할 것 같다...
코드
#include <iostream>
using namespace std;
int a[8];
void go(int index, int n, int m)
{
if (index == m)
{
for (int i = 0; i < m; ++i)
{
cout << a[i] << " ";
}
cout << "\n";
return;
}
for (int i = 1; i <= n; ++i)
{
a[index] = i;
go(index + 1, n, m);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m;
cin >> n >> m;
go(0, n, m);
}
결과
'알고리즘 > 백준' 카테고리의 다른 글
[C++] 백준 2529번 : 부등호 (0) | 2020.05.30 |
---|---|
[C++] 백준 15649번 : 다음 순열 (0) | 2020.04.17 |
[C++] 백준 15649번 : N과 M (2) (0) | 2020.04.17 |
[C++] 백준 15649번 : N과 M (1) (0) | 2020.04.17 |
[C++] 백준 1748번 : 수 이어쓰기 1 (0) | 2020.04.16 |