您的位置:首页 > 编程语言 > C语言/C++

C语言递归穷举n位m进制数字(回溯)

2017-10-31 11:35 901 查看

Problem B

穷举n位二进制数

时限:100ms 内存限制:10000K 总时限:300ms

描述:

输入一个小于20的正整数n,要求按从小到大的顺序输出所有的n位二进制数,每个数占一行。
输入:

输入一个小于20的正整数n。
输出:

按从小到大的顺序输出所有的n位二进制数,每个数占一行。
输入样例:

3

输出样例:

000
001
010
011
100
101
110
111

#include<stdio.h>
int n,a[100];
void search(int m);
void output();
int main()
{
scanf("%d",&n);
search(0);
return 0;
}
void search(int m)
{
int i;
if(m==n)output();
else 
{
for(i=0;i<2;i++)//若将i<2改为i<m,则可输出n位m进制数字
{
a[m]=i;
search(m+1);
}
}
}
void output()
{
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息