본문 바로가기
알고리즘/백준

[C++] 백준 15649번 : N과 M (3)

by 컴공맨 2020. 4. 17.
 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.

www.acmicpc.net


문제


풀이

N과 M (1) 에서 중복을 허용한 문제이다.

 

N과 M (1) 코드에서 check 배열을 통한 중복확인을 빼면 된다.

 

아래 링크의 풀이 참고

 

[C++] 백준 15649번 : N과 M (1)

15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력..

comgong-man.tistory.com


문제점

재귀 함수를 사용할 경우 직접 손으로 써보면서 확인을 해보는 습관을 가져야 할 것 같다...


코드

#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);

}

결과


 

 

 

pyo7410/Study

Contribute to pyo7410/Study development by creating an account on GitHub.

github.com