From beb67e3eaa87923097bda033ce508227d0e59d26 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sun, 23 Nov 2025 11:25:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=A9=AC=E5=B0=94?= =?UTF-8?q?=E5=8F=AF=E5=A4=AB=E9=93=BE=E6=88=90=E8=AF=AD=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现基于马尔可夫链的成语生成器,包含核心算法和成语数据文件。程序能够读取成语库并生成新的四字成语组合,同时标记已存在的成语。 新增markov_chain.cpp实现核心逻辑,包含字符串处理、概率模型和随机生成功能。添加markov_chain.txt作为成语数据源,包含200个常用成语及其编号。 --- src/11/23/markov_chain.cpp | 67 ++++++++++++ src/11/23/markov_chain.txt | 219 +++++++++++++++++++++++++++++++++++++ 2 files changed, 286 insertions(+) create mode 100644 src/11/23/markov_chain.cpp create mode 100644 src/11/23/markov_chain.txt diff --git a/src/11/23/markov_chain.cpp b/src/11/23/markov_chain.cpp new file mode 100644 index 0000000..c60532e --- /dev/null +++ b/src/11/23/markov_chain.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using ll = int64_t; +#define sl static inline + +const int cnsize=3; +ll ltmp; +std::map> m; +std::vector startw; +std::random_device rd; +std::mt19937 mt(rd()); +std::unordered_set old; + +sl std::vector stovs(const std::string &s){ + std::vector ret; + for(int i=0;i>ltmp){ + std::string b; + std::cin>>b; + std::vector strs=stovs(b); + // for(auto &i:strs){ + // std::cout< uv(0,startw.size()-1); + for(int i=1;i<=20;i++){ + // std::cout<<"i="< uvm(0,m[now].size()-1); + now=m[now][uvm(mt)]; + } + std::cout<