Sample Input:
4 2
Sample Output
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
实例分析:例子中,每一位都可以是0或1,这就可以直接为其赋值,递归下去为止
#include <iostream>
using namespace std;
const int len = 10;
int n;
int m;
int result[len];
void solve(int level);
int main()
{
cin>>n>>m;
solve(0);
system("pause");
return 1;
}
/*----------------------
操作的目的:类循环组合排列
初始条件:
n:记录数据的总位数
m:表示每一位上的最大数字不能超过m-1
result数组:存储已得到的结果
操作结果:
输出result数组,所有的类循环组合排列
函数参数:
level:既代表递归的层次,也代表result数组已经处理到第几位了
一句话就是:把0或1放到result数组的第level位上
------------------------*/
void solve(int level)
{
if (level==n)
{
for (int i=0;i<n;i++)
{
cout<<result[i];
}
cout<<endl;
}
else
{
for (int i=0;i<m;i++)//使用for循环为每一位赋值0或1
{
result[level]=i;//直接使用i为其赋值
solve(level+1);
}
}
}