[伯俊/c+]15652号:NとM(4)


質問リンク-https://www.acmicpc.net/problem/15652

[質問]



[回答]

  • NおよびM(2)問題は、昇順数列を繰り返し出力しない問題である.
  • 今回のNとM(4)問題は雨量降順を満たせばよく,前の指数と等しいか大きいかの数を満たせばよい.つまりstartで開始する数字を指定し、重複チェックを省略すればよい.
  • 以前のNおよびM(2)のコードでは、check[10]による繰返し検査の部分が削除され、次の再帰関数に移行すると(繰返し可能であるため)、startにi+1ではなくiが加えられる.
  • [コード]

    //15652. N과 M(4)
    #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);  
     
    }