gpt4 book ai didi

c - 有没有更好的方法来优化下面的程序?

转载 作者:行者123 更新时间:2023-11-30 16:45:02 24 4
gpt4 key购买 nike

这个程序基本上取一个从 1 到 10 的十进制数,即 2 的幂的索引。并变成一个具有 2^n 组合的数组。例如:如果我的数字是1,我将有2个数组,[0]和[1],如果我的小数是2,我将有4个组合,[0 0]; [0 1]; [1 0]; [1 1]。等等。

#include <stdio.h>

int main() {
int n, q = 1, i, f, d, p, vet[10];

scanf ("%d", &n);

for (i = 0; i < n; i++){
q *= 2;
}
n--;

for (i = 0; i < q; i++){
f = i;

for (p = 0; p < 10; p++){ //setting array to 0
vet[p] = 0;
}

while ( f > 0){
p = 1;
d = 0;

while (f >= 2*p){
p *= 2;
d++;
}

vet[d] = 1;
f -= p;
}

printf ("f: %d bin:", i);

for (p = 0; p < 10; p++)
printf ("%d", vet[9-p]);

printf ("\n");
}
return 0;
}

最佳答案

#include <stdio.h>

int main(void) {
int n, q = 1, vet[10] = {0};

scanf("%d", &n);
q <<= n;

for(;;){
for(int i = n-1; i >= 0; --i)
printf("%d", vet[i]);
printf("\n");
if(!--q)
break;
for(int i = 0, carry = 1, c; carry; ++i, carry = c){
c = vet[i] & carry;
vet[i] ^= carry;
}
}
}

关于c - 有没有更好的方法来优化下面的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com