当前位置:   article > 正文

蓝桥杯:01串的熵讲解(C++)

串的熵

01串的熵

本题来自于:2023年十四届省赛大学B组真题(共10道题)

主要考察:暴力

代码放在下面,代码中重要的细节全都写了注释,非常清晰明了:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. // 请在此输入您的代码
  6. int n = 23333333; //01串的长度
  7. double target = 11625907.5798; //信息熵的目标值
  8. for(int i = 0; i <= n; i++){//从0开始,暴力求解
  9. double p0 = static_cast<double> (i) / n; //强转,让其中一方为double类型。 这一行代码是求p0的占比
  10. double p1 = 1 - p0; //p1的占比
  11. double entropy = -p0 * i * log2(p0) - p1 * (n-i) * log2(p1); //信息熵
  12. if(fabs(entropy - target) < 0.0001) //因为我们用double,精度会丢失,这里我们认为差值<0.0001就算相等
  13. {
  14. cout << i <<endl;//0出现的次数。 如果求1出现的次数该怎么写?n-i就行了。
  15. break;
  16. }
  17. }
  18. return 0;
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/438829?site
推荐阅读
相关标签
  

闽ICP备14008679号