BOJ|15650 NとM(2)


| Link


BOJ 15650

| Problem


自然数NとMが与えられた場合、以下の条件を満たすすべての長さMの数列を解くプログラムを作成します.
  • 1からNまで、自然水体中でM個の数列
  • を繰り返し選択する.
  • の数列を選択するには、昇順に並べます.
  • 入力
    第1行は自然数NとMを与える.(1 ≤ M ≤ N ≤ 8)
    以前の問題とは異なり、昇順出力条件を追加
    次に、関数に開始点を追加し、開始点+1を返します.

    | Code

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int n, m;
    vector<int> seq;
    
    void func(int index, int size) {
    	if (size == m)
    	{
    		for (int i : seq)
    			printf("%d ", i);
    		printf("\n");
    		return;
    	}
    	for (int i = index; i <= n; i++)
    	{
    			seq.push_back(i);
    			func(i+1, size + 1);
    			seq.pop_back();
    	}
    }
    
    int main() {
    	scanf("%d %d", &n, &m);
    	func(1,0);
    	return 0;
    }

    | Result