gpt4 book ai didi

c - C 中的基本枚举效率

转载 作者:行者123 更新时间:2023-11-30 17:09:51 24 4
gpt4 key购买 nike

我正在尝试获得一些飞行云技术,并且正在解决这些类型的问题。

从 1774 年到 1788 年,大陆 session 共有 16 位主席。参加美国历史研讨会的五名学生每人选择其中一位进行报告。如果所有总统被选择的可能性相同,请计算至少两个学生选择同一位总统的概率。

#include <stdio.h>
int main()
{
int tot=0, probc=0, a=1, b=1, c=1, d=1, e=1, cnt=16;

while(e<=cnt)
{
while(d<=cnt)
{
while(c<=cnt)
{
while(b<=cnt)
{
while(a<=cnt)
{
if(a==b){++probc;}
else if(a==c){++probc;}
else if(a==d){++probc;}
else if(a==e){++probc;}
else if(b==c){++probc;}
else if(b==d){++probc;}
else if(b==e){++probc;}
else if(c==d){++probc;}
else if(c==e){++probc;}
else if(d==e){++probc;}
++a;++tot;
}
a=1;++b;
}
b=1; ++c;
}
c=1; ++d;
}
d=1;++e;
}
printf("%d / %d", probc,tot);
return 0;
}
output:
524416 / 1048576

关于什么会更有效,以及我可以研究的技术,等等,有什么想法可以使这更合乎逻辑且更短吗?特别是我可以看到循环,或者 else if,我可以压缩这些参数吗?

最佳答案

这是一个比较简单的概率问题。无需编程。要计算至少两个学生选择同一位总统的机会,如果计算没有学生选择同一位总统的机会,然后取其倒数,会更容易。

按顺序考虑学生:

  1. 学生 #1 可以选择 16 位总统中的任何一位,而不必担心重叠。选择一位独特总统的机会 = 16/16。
  2. 学生 #2 有 15/16 的机会选出一位独特的总统。
  3. 学生 #3 有 14/16 的机会。
  4. 学生 #4 有 13/16 的机会。
  5. 学生 #5 有 12/16 的机会。

由于这些是独立的选择,您可以将它们相乘,以获得每个人选择一位独特总统的总体机会。

16/16 * 15/16 * 14/16 * 13/16 * 12/16
= 4095/8192
≈ 49.98%

但请记住,我们正在寻找与此相反的内容。答案是:

1 - 4095/8192
= 4097/8192
≈ 50.01%

关于c - C 中的基本枚举效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33116063/

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