穷举n位二进制数

来源:互联网 发布:歧视知乎 编辑:程序博客网 时间:2024/04/29 13:36

     本科生大二菜鸟一枚,最近上算法分析课老师出了道题,要求再输入一个小于20的正整数n的条件下穷举出n位二进制数。

     做这道题的时候很容易想到的就是用10进制转成二进制数的常用方法,然后循环列举就行了。代码如下:

#include<stdio.h>#include<math.h>int main(){    int a,n,i,j,k,A[20];scanf("%d",&n);if(n>20||n<1)printf("输入错误!");for(i=0;i<pow(2,n);i++){   a=i;        for(j=1;j<=n;j++){A[j-1]=a%2;a=a/2;}for(k=n-1;k>=0;k--){printf("%d",A[k]);}printf("\n");}    return 0;   }

然后还有一种就是学了回溯算法之后的基本模板改过来了,如下:

#include <stdio.h>#include <iostream.h>#include <math.h>int n,c[20];void search(int m){int i;if(m==n){for (i=0;i<n;i++){printf("%d",c[i]);}printf("\n");}else {c[m]=0;search(m+1);c[m]=1;search(m+1);}}int main()  {      int m=0;      scanf("%d",&n);         search(m);      return 0;  }  

以上。

作为大二学生的自我分享平台。

0 0
原创粉丝点击