再帰的にいくつかの配列組合せ問題を解く(一、クラス循環組合せ配列)
検索の深さが深い場合や深さが固定されていない場合、ループネストされたレイヤ数を列挙する方法で設定することはできません.この場合、再帰法で検索タスクを完了することが考えられます.再帰は、検索の別の実装方法である一般的なアルゴリズムです.アルゴリズム設計において、問題を解決するために関数またはプロセスが直接または間接的に呼び出される方法を採用する場合、この方法を再帰アルゴリズムと呼ぶ.再帰アルゴリズムは、1つまたは複数の決定された再帰終了条件を設計しなければならない.
一、類循環組合せ配列
Sample Input
:
4 2
Sample Output
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
一、類循環組合せ配列
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;
}