/*----------------------------------------随机生成文本程序2011.3.15 by LiWang112358----------------------------------------*/#include <iostream>
#include <time.h>using namespace std;int k = 2;//二元模型;当前单词的产生依赖于前一个单词
char inputchars[5000000];
char * word[1000000];
int nword = 0;int cmp(char * p,char * q)
{int n = k;for (; *p == *q; p ++ ,q ++)if ( 0 == *p && -- n == 0)//只有当后缀数组的前两个单词相同时,默认是相同的return 0;return *p - *q;
}int sortcmp(const void * p,const void * q)
{return cmp((char *)p,(char *)q) <= 0;
}void myQsort(char * a[],int l,int r)
{int i,j;char * s = a[l];i=l;j=r;while (i<=j){while (cmp(a[i],s) < 0 && i<=j) i++;while (cmp(a[j],s) > 0 && i<=j) j--;if (i<=j){swap(a[i],a[j]);i++;j--;}}if (i<r) myQsort(a,i,r);if (l<j) myQsort(a,l,j);
}int find(int begin,int end,char * x,char * a[]) // 二分查找
{int l = begin,r = end,mid = (l + r) >> 1;while (l <= r){if (strcmp(a[mid],x) < 0) l = mid + 1;else if (strcmp(a[mid],x) > 0) r = mid - 1;else if (strcmp(a[mid],x) == 0){while (mid > 0 && strcmp(a[mid],a[mid - 1]) == 0) --mid;return mid;}mid = (l + r) >> 1;}return -1;
}char * skip(char * p,int num)
{for (int i = 0; i < num ; ++ i){for (; (*p) > 0; ++ p);p++;}return p;
}
int main()
{freopen("in.txt","r",stdin);memset(inputchars,0,sizeof(inputchars));word[0] = inputchars;while (scanf("%s",word[nword]) != EOF){word[nword + 1] = word[nword] + strlen(word[nword]) + 1;nword ++;}for (int i = 0; i < k; ++ i)word[nword][i] = 0;myQsort(word,0,nword - 1);srand(int(time(0)));char * p = inputchars;for (int i = 0; i < 10000; ++ i){printf("%s ",p);if ( i > 0 && i % 20 == 0) printf("/n");int pos = find(0,nword - 1,p,word);int j = 0;for (j = 0; strcmp(p,word[pos + j]) == 0 && pos + j < nword; ++ j);int rd = abs(rand()) % j;p = word[pos + rd];p = skip(p,1);if (strlen(skip(p,k - 1)) == 0) break;}return 0;
}

转自:http://blog.csdn.net/liwang112358/article/details/6253758

编程珠玑 15.3生成文本相关推荐

  1. 斯坦福NLP名课带学详解 | CS224n 第15讲 - NLP文本生成任务(NLP通关指南·完结)

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...

  2. 《Python编程:从入门到实践》读书笔记:第15章 生成数据

    目录 第15章 生成数据 15.1 安装Matplotlib 15.2 绘制简单的折线图 15.2.1 修改标签文字和线条粗细 15.2.2 校正图形 15.2.3 使用内置样式 15.2.4 使用s ...

  3. 《编程珠玑》高清pdf版

    下载地址:网盘下载 作者简介 编辑 Jon Bentley是位于新泽西州Murray Hill的朗讯贝尔实验室计算机科学研究中心的技术委员会委员,Jon自1998年就成为Dr. Dobb's Joum ...

  4. NLP实战:利用Python理解、分析和生成文本 | 赠书

    导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...

  5. 编程珠玑第12章习题

    内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...

  6. 查找一段文字中最长的重复字串 – 编程珠玑(排过序的后缀数组的应用)

    转自:https://www.cse.msu.edu/~liyang5/?p=53 <编程珠玑>在第15章"珍珠字符串"一节,给出了一个非常漂亮的实现 – 基于目标字符 ...

  7. 【读薄《编程珠玑》】壹 开篇

    这篇文章是<读薄<编程珠玑>>系列博客的第一篇,在这篇文章中,我总结了在书中出现的一些问题以及一些解决方案. 问题集合 0x01:一个最多包含n个正整数的文件,每个数都小于n, ...

  8. 最大字段和各种不同算法实现(参考编程珠玑)

    求最大字段和的算法很好的讲解了算法设计技术.根据<编程珠玑>上的描述,简单实现各种不同的算法.如下: 1.最简单的方法:对所有满足0≤i≤j<n的(i,j)整数进行迭代.对每个整数对 ...

  9. 《编程珠玑(续)(修订版)》—第2章2.1节Awk中的关联数组

    本节书摘来自异步社区<编程珠玑(续)(修订版)>一书中的第2章,第2.1节Awk中的关联数组,作者[美]Jon Bentley,更多章节内容可以访问云栖社区"异步社区" ...

最新文章

  1. java并发中的延迟初始化
  2. [BZOJ3203][SDOI2013]保护出题人(凸包+三分)
  3. selenium等待定位标签加载完再执行
  4. mysql @ $_mysql常见笔试题
  5. linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作
  6. vscode怎样导入数据_【Python开发】用VSCode+Jupyter notebook 编写 Python
  7. Hadoop基础--HDFS/Yarn/MapReduce概述
  8. .net 遍历界面上所有的控件,替换危险字符,例如单引号。
  9. MVP登录和注册页面Activity类 生成二维码 异常捕获类
  10. ArcPad8新功能介绍
  11. STM32——电容触摸按键实验
  12. [渝粤教育] 中国地质大学 大学语文 复习题 (2)
  13. s3c2440芯片累加汇编语言,S3C2440—3.用点亮LED来熟悉裸机开发的详细流程
  14. 株洲c语言培训机构,株洲好就业的学c语言程序设计,计算机专业地址
  15. 优维科技联合广发证券发起「CD持续交付一期项目复盘会」
  16. 三色过人脸脚本_格灵深瞳算法团队获得NIST人脸识别竞赛全球第一
  17. oracle 的concat()函数,Oracle Concat()函数
  18. pytorch中的BatchNorm和LayerNorm
  19. Javaweb基础配置模板(mybatis+javaweb)
  20. day 83 Vue学习之五DIY脚手架、webpack使用、vue-cli的使用、element-ui

热门文章

  1. 那年大一在图书馆作死的大学高数笔记 | 函数和极限
  2. 主流mes厂商_MES市场的前景
  3. 算法工程师想拿百万高薪,5大维度评估竞争力,情商也很重要
  4. AAAI 2020 时间交错网络 | ICCV19多标签视频理解冠军方案
  5. 清华大学人工智能研究院开源“天授”强化学习平台
  6. 深度学习预训练模型可解释性概览
  7. Google、Stanford导师带出的AI人才,是你吗?
  8. Let's Fork | 11 款 Github 最新「机器学习」开源项目
  9. acm公选课第三节4.7直播4.9补 递归 深搜啥的
  10. MyBatis框架:延迟加载策策略、一级缓存、二级缓存