为任意长度的数字生成0和1的所有可能组合的算法

bla*_*d Ψ 4 algorithm

我想知道如何打印n个1和0的组合.组合的数量n是用户定义的.预期产出是;

N = 1;

0,1
Run Code Online (Sandbox Code Playgroud)

n = 2时;

00,01,10,11
Run Code Online (Sandbox Code Playgroud)

N = 3;

000,001,010,011,100,101,110,111
Run Code Online (Sandbox Code Playgroud)

等..等..

输出将具有2^n多个组合(其中n是单个组合中的预期数字的数量).

如何在不使用任何内置功能的情况下执行此操作?问题是语言无关,用于算法.

提前致谢...n

Ani*_*han 11

您可以枚举所有数字,直到2^n - 1二进制.这将给你带来相同的组合.

n = 2枚举until 2^3 - 1= 7 转换为二进制:

000 --> 0
001 --> 1
010 --> 2
011 --> 3
100 --> 4
101 --> 5
110 --> 6
111 --> 7
Run Code Online (Sandbox Code Playgroud)

编辑:修正了数字位数.这有效

#include <stdio.h>
#define LENGTH 3
void print_binary(int n)
{
        int bit = 1<<LENGTH - 1;
        while ( bit ) {
        printf("%d", n & bit ? 1 : 0);
        bit >>= 1;
        }
        printf("\n");
}
int main(){
    int n = 1<<LENGTH, i; 
    for(i=0;i<n;i++)
        print_binary(i);
}
Run Code Online (Sandbox Code Playgroud)

  • 不,这不对.您可以根据需要预先附加0以获得正确的长度.你问了算法,他给了你一个算法.你为什么不自己实施呢?! (4认同)