【第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少,我们只需遍历到数组的一半位置即可

参考代码

cs 复制代码
#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;
}

答案:

相关推荐
Filotimo_9 小时前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows
代码栈上的思考9 小时前
MyBatis:注解方式实现数据库 CRUD 全操作
java·开发语言·mybatis
C语言小火车9 小时前
【C++】学生管理系统设计与实现丨SQLite数据库版本
开发语言·c++
代码游侠9 小时前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
JIngJaneIL9 小时前
基于java+ vue学生选课系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
Nick_zcy10 小时前
基于Vue和Python的羽毛球拍智能推荐系统, 从“不会选羽毛球拍”到“选对拍”的一站式小工具
前端·vue.js·python·算法·推荐算法
li.wz10 小时前
JDK17 深度解析:从特性实现到生产实践
java·开发语言
冰冰菜的扣jio10 小时前
理解类加载过程
开发语言·python
charlie11451419110 小时前
AVX 指令集系列深度介绍:领域、意义、以及 AVX AVX2 的基本用法与样例
开发语言·c++·人工智能·软件工程·并行计算·avx