摘要:
概念 背包问题是一类组合优化问题,抽象定义: 有一系列的物品,每样都有重量和价值,选择一些物品使得总的重量不超过限制,总的价值尽可能大。 背包是一种隐喻,即假设某人有固定容量的背包,怎样选择物品,使得物品的总价值最高。 应用 投资组合选择 原料最优化切割 Merkle–Hellman 密钥的生成 1 阅读全文
摘要:
Codingame 散列表为主题的练习题中,马尔科夫链文本生成吸引到了我的注意力。它集合了马尔科夫链,状态机和散列表三个方面的学习内容。其中,n-gram马尔科夫链运用到了文本聊天机器人的设计中,还是蛮有启发性的,应该是chatgpt之前的一项经典技术。下面简单讲讲这个编程练习题。 目标 制作一个游 阅读全文
摘要:
整理回顾一下Codingame上做过的一些编程题。先从散列表实现的一个题目MIME type开始。 https://www.codingame.com/ide/puzzle/mime-type 目标 MIME在多种互联网协议中被使用到,用来标识发送内容的媒体类型(html,图片,视频),通常通过文件 阅读全文
摘要:
问题 有时候我们遇到这样的压缩文件,手动用7zip解压到某个目录,打开目录后,里面还有不同压缩格式的其他文件。我们还要对它们分别手动解压,解压出来的文件目录里面可能还包含其他压缩文件。这样,我们可能需要层层解压才能获得自己想看的文件,琐碎且耗时。于是,用软件实现这项任务的自动化就挺有必要的。 设计 阅读全文
摘要:
最近略读了一遍盖尔拉克曼麦克道尔《程序员面试金典》(Cracking the coding interview 6th edition by Gayle Laakmann McDowell),感觉对程序员的面试和职业生涯挺有启发作用的。本篇博客就想简单记录自己的想法和文中要点。 哪里可以下载或者阅读 阅读全文
摘要:
按照github主页的说明,cereal 是一个只有头文件形式的C++11序列化库,可以对任意数据类型进行序列化处理,并且能反向将序列化的数据解析成不同的二进制编码形式,如XML或者JSON。设计目标是快速、轻量和易于扩展。 支持序列化的类型方面,cereal基本支持每种标准库类型,比如std::v 阅读全文