描述:
输入一个小于20的正整数n,要求按从小到大的顺序输出所有的n位二进制数,每个数占一行。
输入:
输入一个小于20的正整数n。
输出:
按从小到大的顺序输出所有的n位二进制数,每个数占一行。
输入样例:
3
输出样例:
000 001 010 011 100 101 110 111
①:用回溯算法 --不撞南墙终不回
#include<stdio.h>
int n;
int a[100];
void search(int m)
{
int i;
if(m==n)
{
for(i=0;i<n;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
else
{
a[m]=0;
search(m+1);
a[m]=1;
search(m+1);
}
}
int main()
{
scanf("%d",&n);
search(0);
return 0;
}
②用十进制数转二进制,非常简单的方法
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int A[100];
int i,j;
for(i=0;i<pow(2,n);i++)
{
int a=i;
for(j=0;j<n;j++)
{
A[j]=a%2;
a=a/2;
}
for(j=n-1;j>=0;j--)
{
printf("%d",A[j]);
}
printf("\n");
}
return 0;
}