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

算法5-16 对二进制字符串解码

输入样例:

5
a 4
b 3
c 2
w 1
z 1
100001110101101101100111

输出样例:

baaacabwbzc

ac代码:

 

#include<iostream>
#include<queue>
#include<map>
using namespace std;
const int N=10010;
int idx;
int a[N][2];
char b[N];
map<string,char>mp;
struct node{int num,id;bool operator<(const node&n1)const{return n1.num==num?n1.id>id:n1.num<num;}};
void dfs(int u,string str){if(!a[u][0]){mp[str]=b[u]; return;}dfs(a[u][0],str+'0');dfs(a[u][1],str+'1');
}
priority_queue<node>pq;
int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++){getchar();char c; scanf("%c",&c);int num; scanf("%d",&num);b[++idx]=c;pq.push({num,idx});}for(int i=1;i<n;i++){node tmp0=pq.top(); pq.pop();node tmp1=pq.top(); pq.pop();a[++idx][0]=tmp0.id;a[idx][1]=tmp1.id;pq.push({tmp0.num+tmp1.num,idx});}string str="";dfs(idx,str);string res; cin>>res;// for(map<string,char>::iterator it=mp.begin();it!=mp.end();it++){//     cout << "Key: " << it->first << ", ";//     // 访问值//     cout << "Value: " << it->second << endl;// }int l=0;for(int i=1;i<=res.size();i++){string s=res.substr(l,i-l);if(mp.find(s)!=mp.end()){//  cout<<s<<endl;printf("%c",mp[s]);l=i;}}return 0;
}

不知道上述这样写会不会很憨,思路:

构建哈夫曼树,把每个字母的编码求出,然后对最后的字符串进行匹配。

http://www.xdnf.cn/news/4897.html

相关文章:

  • 多 Agent 协作怎么整:从谷歌A2A到多Agent交互方案实现
  • STL简介(了解)
  • 【无标题】
  • Qt核心知识总结
  • 第六章:6.3求一个3*3的整型矩阵对角线元素之和
  • ESP32-idf学习(二)esp32C3作服务端与电脑蓝牙数据交互
  • 机器学习有多少种算法?当下入门需要全部学习吗?
  • vscode+keil嵌入式软件开发全流程
  • C++笔记-list
  • 【已更新】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测
  • 06-DevOps-自动构建Docker镜像
  • 动态规划专题5:最长上升子序列
  • LeetCode hot 100—括号生成
  • 数据中台(大数据平台)之数据质量管理
  • 3.Rust + Axum 提取器模式深度剖析
  • 【Python Cookbook】迭代器与生成器(一)
  • 【Qt】初识Qt(一)
  • Oracle 12.1.0.2补丁安装全流程
  • FPGA阵列
  • ZStack文档DevOps平台建设实践
  • 设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用
  • 基于Django实现的图书分析大屏系统项目
  • Linux 常用命令总结
  • NLP高频面试题(四十六)——Transformer 架构中的位置编码及其演化详解
  • MCP和A2A是什么?
  • FreeRTOS事件标志组
  • 【Linux】第八章 监控和管理Linux进程
  • 关于Diamond机械手的运动学与动力学的推导
  • 【力扣刷题】49字母异位词分组,不用哈希,c语言实现
  • 《AI大模型应知应会100篇》第22篇:系统提示词(System Prompt)设计与优化