我想知道如何打印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)