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

来源:互联网 发布:apache网络服务器 编辑:程序博客网 时间:2024/06/02 05:40

Problem B

穷举n位二进制数

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

描述:

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

输入:

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

输出:

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

输入样例:

3

输出样例:

000001010011100101110111

#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");}