再帰的にいくつかの配列組合せ問題を解く(一、クラス循環組合せ配列)


検索の深さが深い場合や深さが固定されていない場合、ループネストされたレイヤ数を列挙する方法で設定することはできません.この場合、再帰法で検索タスクを完了することが考えられます.再帰は、検索の別の実装方法である一般的なアルゴリズムです.アルゴリズム設計において、問題を解決するために関数またはプロセスが直接または間接的に呼び出される方法を採用する場合、この方法を再帰アルゴリズムと呼ぶ.再帰アルゴリズムは、1つまたは複数の決定された再帰終了条件を設計しなければならない.
一、類循環組合せ配列
Sample Input

4 2  
Sample Output 
0000 
0001 
0010 
0011 
0100 
0101 
0110 
0111 
1000 
1001 
1010 
1011 
1100 
1101 
1110 
1111  
#include<stdio.h>
int n,m,mat[10];
void solve(int l)
{
    if(l>=n)
    {
        for(int i=0;i<n;++i)
            printf("%d",mat[i]);
        puts("");
        return;
    }
    for(int i=0;i<m;++i)
    {
        mat[l]=i;
        solve(l+1);
    }
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        solve(0);
    }
    return 0;
}