当前位置: 首页 > news >正文

【第14届蓝桥杯C/C++B组省赛】01串的熵

问题描述

算法思想

首先分析题目中给出的公式

S = 100时,其信息熵为

H(S)=−p(0)log2​(p(0)) − p(0)log2​(p(0)) − p(1)log2​(p(1))

继续化简公式得

设0出现的次数为x,1出现的次数为3-x

H(S)=−x * p(0) * log2​(p(0)) − (3-x) * p(1) * log2​(p(1))

现在,我们有一个长度为23333333的01串,其信息熵已知为11625907.5798。题目还告诉我们,0出现的次数比1少。我们的任务是计算出0出现的次数。

为了解决这个问题,我们只需暴力枚举01串,计算出相应的信息熵和已知条件对比,由于0出现的次数比1少,我们只需遍历到数组的一半位置即可

参考代码

#include<stdio.h>
#include<math.h>
int main(int argc,char *argv[])
{
	double n = 23333333;
	double zeroSum = 0;
	int zero,one;
	for(zero = 0; zero <= n / 2;++zero)
	{
		one = n - zero;
		zeroSum = -zero * (zero / n) * log2(zero / n) - one * (one / n) * log2(one / n);
		if(zeroSum > 11625907.5 && zeroSum < 11625907.6)
		{
			printf("%d",zero);
			break;
		}
	}
	return 0;
}

答案:

相关文章:

  • PCA Jittering 图像增强
  • 【通过Groovy去热修复线上逻辑】1.执行线上数据修复 2.写工具
  • 仿函数 VS 函数指针实现回调
  • RAG现有技术方案
  • 【Golang】defer与recover的组合使用
  • PyCharm中使用pip安装PyTorch(从0开始仅需两步)
  • 设计和布局硬件电路是嵌入式系统开发的重要环节
  • 3.22日西南竞篮,NBA勇士VS老鹰,赛前数据前瞻
  • LeetCode 2643.一最多的行:模拟(更新答案)
  • Wispr Flow,AI语言转文字工具
  • 鸿蒙NEXT开发案例:程序员计算器
  • 使用若依AI生成springBoot的前后端分离版本
  • 为WordPress自定义一个留言板
  • 【QA】QT编译过程和C++编译过程的区别?
  • Flutter Dart 异步支持全面解析
  • Rocky9.5基于sealos快速部署k8s集群
  • C++Primer学习(13.2 拷贝控制和资源管理)
  • 搜广推校招面经五十六
  • 基于linux平台的C语言入门教程(4)输入输出
  • MySQL表的增加、查询的基础操作
  • 美加征“对等关税”后,调研显示近半外贸企业将减少对美业务
  • 商超展销延长、专区专柜亮相……上海“外贸拓内销”商品与市民见面
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 哈马斯同意释放剩余所有以色列方面被扣押人员,以换取停火五年
  • 江西省宁都县政协原二级调研员谢亦礼被查
  • 西北大学党委副书记吕建荣调任西安财经大学党委书记