【20200602程序设计思维与实践 Week15 作业】

2023-05-16

目录

    • B - ZJM 与生日礼物
      • 题意
      • 思路
      • 代码
    • C - ZJM 与纸条
      • 题意
      • 思路
      • 代码


B - ZJM 与生日礼物

题意

ZJM收到了Q老师送来的生日礼物,但是被 Q老师加密了。只有 ZJM 能够回答对Q老师的问题,Q老师才会把密码告诉 ZJM。

Q老师给了ZJM一些仅有 01组成的二进制编码串, 他问ZJM:是否存在一个串是另一个串的前缀.


思路

本题使用字典树。在基本字典树的基础上修改插入操作,使其在插入过程中检查是否访问到某一字符串的尾或插入的字符串是已存在字符串的前缀:只要有如此两种情况,则存在一个串是另一个串的前缀。


代码

#include<iostream>
#include<string.h>
using namespace std;

struct Trie{
	static const int N=1010,charset=2;
	int tot,root,child[N][charset],flag[N];
	Trie(){
		memset(child,-1,sizeof child);
		root=tot=0;
	}
	void clear(){
		memset(child,-1,sizeof child);
		root=tot=0; 
	}
	
	int insert(char* str){
		int now=root,jud=0,len=strlen(str);
		for(int i=0;i<len;i++){
			int x=str[i]-'0';
			if(child[now][x]==-1){
				child[now][x]=++tot;
				flag[now]=0;
			}else if(i==len-1||flag[child[now][x]])jud=1;
			now=child[now][x];
		}
		flag[now]=1;
		return jud;
	}
};

int main(){
	Trie Tree;
	char str[1010];
	int JDG=0;
	int cot=0;
	while(scanf("%s",str)!=EOF){
		if(str[0]=='9'){	
			Tree.clear();
			cot++;
			if(JDG)printf("Set %d is not immediately decodable\n",cot);
			else printf("Set %d is immediately decodable\n",cot);
			JDG=0;
			continue;
		}
		if(Tree.insert(str))JDG=1;
	}
}

C - ZJM 与纸条

题意

ZJM 的女朋友是一个书法家,喜欢写一些好看的英文书法。有一天 ZJM 拿到了她写的纸条,纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物。ZJM 想知道自己收到的礼物是不是就是她送的,于是想看看自己收到的礼物在纸条中出现了多少次。


思路

本题要求在主串中找到所有与模式串匹配的子串。用暴力算法复杂度为O(nm),所以使用了KMP算法来优化。

KMP算法的关键在于跳过必不可能成功的字符串比较以减少比较的趟数。为此,准备了Next数组,其中Next[i]表示使模式串的0~i位的K-真前缀等于K-真后缀的最大K,该数组可在线性时间内计算出来。利用Next数组,主串在于模式串失配后可以跳过已经被确保不可能匹配的子串,从而也在线性时间内完成全部的检查。


代码

#include<iostream>
#include<cstring>
using namespace std;

char P[10005],S[1000005];
int Next[10005];
int N,cot;

void get_next(const char ptr[],int len){
	Next[0]=0;
	for(int i=1,j=0;i<len;++i){
		while(j&&ptr[j]!=ptr[i])j=Next[j-1];
		if(ptr[j]==ptr[i])j++;
		Next[i]=j;
	}
}

void KMP(const char str[],const char ptr[]){
	int len1=strlen(str);
	int len2=strlen(ptr);
	int j=0;
	get_next(ptr,len2);
	for(int i=0;i<len1;i++){
		while(j&&ptr[j]!=str[i])j=Next[j-1];
		if(ptr[j]==str[i])j++;
		if(j==len2){
			cot++;
			j=Next[j-1];
		}
	}
} 


int main(){
	scanf("%d",&N);
	while(N--){
		cot=0;
		scanf("%s",P);
		scanf("%s",S);
		KMP(S,P);
		printf("%d\n",cot);
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【20200602程序设计思维与实践 Week15 作业】 的相关文章

  • Git常用命令及方法大全

    Git常用命令及方法大全 下面是我整理的常用 Git 命令清单 几个专用名词的译名如下 Workspace xff1a 工作区Index Stage xff1a 暂存区Repository xff1a 仓库区 xff08 或本地仓库 xff
  • debian最小化安装后的配置

    本次安装的是debian11 xff0c 安装时只选择标准工具 xff0c 安装成功后希望使用suckless系列软件 xff0c 包括dwm和st 配置内容依次为 xff1a 配置wifi 配置无线网络 在 etc network int
  • Vue中的computed和watch的区别和使用

    1 computed使用和介绍 computed计算属性 xff1a 只能对最终结果进行运算功能 xff0c 只计算一次 xff0c 具有缓存功能 xff0c 能实现计算属性与普通属性之间的双向绑定 computed的作用 1 减少模板中的
  • 【蓝桥杯省赛JavaB组真题详解】成绩统计(2020)

    题目描述 成绩统计 小蓝给学生们组织了一场考试 xff0c 卷面总分为 100 分 xff0c 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 xff0c 则称为及格 如果得分至少为 85 分 xff0c 则称为优
  • ThinkPad相机打开后显示为灰色相机斜杠不可用

    打开相机显示如图 xff1a 网络上一堆驱动啥问题导致 xff0c 有些人就火急火燎的去安装驱动啥的 xff0c 没必要 xff0c 一般来说不是驱动的问题 xff0c 只是对ThingPad操作不熟悉而已 解决办法 xff1a 点击下图电
  • 【bcrypt】go使用bcrypt进行加密和验证

    前言 项目开发过程中 xff0c 在注册这一块 xff0c 少不了对用户密码的加密 xff0c 今天使用bcrypt来实现对密码的加密和验证 bcypt加密和md5加密的不同点在于 xff0c 后者更安全 xff0c 对于同一字符串每次生成
  • 【深度学习环境01】 Windows10+WSL2迁移d盘+ Ubuntu 22

    前言 Windows10 xff1a Win系统稳定度舒适度没话说 xff0c 之前用双系统Linux实在太折腾 xff0c 我要布置环境用来开发程序的 xff0c 不是每次安装软件就要debug WSL2迁移d盘 xff1a Wsl是Wi
  • Arduino智能垃圾桶

    Arduino智能垃圾桶 硬件准备工作原理接线方式代码实物补充 舵机和超声波 调试舵机超声波传感器 这个小项目是基于Arduino设计的一款感应式智能开盖垃圾桶这个项目只要一点C语言的基础 xff0c 懂得一点点物联网知识就可以 xff0c
  • p1593 因子和

    因子和 题目描述 输入两个整数 a和 b xff0c 求 a b a b a b 的因子和 由于结果太大 xff0c 只要输出它对 9901 取模的结果 输入格式 仅一行 xff0c 为两个整数 a 和 b 输出格式 输出一行一个整数表示答
  • 如何在指定文件夹下安装python的虚拟环境

    1 什么是python中的虚拟环境 之前我们安装python第三方库时 xff0c 都是直接通过 pip install xx 包名 的方式进行安装的 xff0c 这样会使第三方库直接安装到Python系统环境中 xff0c 同时默认安装的
  • 【求救】各位大侠,救救我吧!!!

    在Sqlite数据库中 xff0c 向某整形或浮点型字段插入0 000005数值时 数据库自动将该值转变成了科学计数法表示的数字 xff0c 即使插入0 000005字符串时 xff0c 情况也一样 请问 xff1a 怎么阻止数据库的自动转
  • C# 字符提取和整數整除

    C 字符提取和整数整除练习 xff08 Console xff09 用控制台应用程序实现下列功能 xff1a 从键盘接收一个大于100的整数 xff0c 然后分别输出该整数每一位的值 xff0c 并且输出这些为相加的结果 要求分别用字符提取
  • 蓝桥杯 试题 历届真题 时间显示【第十二届】【省赛】【B组】java

    蓝桥杯 试题 历届真题 时间显示 第十二届 省赛 B组 java 问题描述 xff1a 小蓝要和朋友合作开发一个时间显示的网站 在服务器上 xff0c 朋友已经获取了当前的时间 xff0c 用一个整数表示 xff0c 值为从 1970年 1
  • 【无标题】

    借个地方发个外链图片
  • 最小m段和问题 动态规划 c++含讲解

    最小m段和问题 给定n个整数组成的序列 xff0c 现在要求将序列分割为m段 xff0c 每段子序列中的数在原序列中连续排列 如何分割才能使这m段子序列的和的最大值达到最小 xff1f 刚刚写了最大k乘积问题的分析 xff0c 再过来看这道
  • OpenCV 源码编译 + cuda + cuDNN(未成功)

    目录 安装 cuda cuDNN1 1 安装 cuda1 2 安装 cuDNN 重新编译 OpenCV 测试安装结果3 1 添加配置项3 2 OpenCV cuda 测试结果 参考文章 前言 xff1a 上篇文章搭建 OpenCV 环境的时
  • 树莓派报错“Cannot currently show the desktop”的完美解决办法

    最近在利用树莓派部署神经网络的时候出现了一些大大小小的问题 xff0c 很多问题都可以在网上直接或间接地找到答案 xff0c 但有个别问题即使按照网上的高赞博客说的去做了仍然没用 笔者根据最近遇到的有关树莓派VNC win10远程桌面连接
  • 汉字国标码、区位码和机内码三者的定义及联系

    一 三者的定义 1 汉字国标码 xff1a 创建于1980年 xff0c 目的为了使每个汉字有一个全国统一的代码而颁布了汉字编码的国家标准 每个汉字有个二进制编码 xff0c 叫汉字国标码 2 区位码 xff1a 国标码是一个四位十六进制数
  • 汇编语言程序设计实验(五)——嵌套循环打印ACSII表

    目录 实验目的及内容一 单层循环实验1 斐波那契数列2 自然数累加和 二 嵌套循环实验1 冒泡排序法2 输出ACSII码表 实验目的及内容 理解循环程序结构的特点 xff0c 掌握循环结构程序的编写 一 单层循环实验 xff08 1 xff
  • logism电路仿真实验(三)——串行加减法器、先行进位加法器、阵列乘除法器、ALU运算器组成实验

    目录 实验说明1 多位串行加法器和多位可控加减电路的设计 xff08 1 xff09 设计完成8位串行加法器 xff08 2 xff09 设计完成8位可控加减法器 2 快速加法器的设计 xff08 1 xff09 设计4位先行进位电路 xf

随机推荐

  • 计算机视觉(多目标跟踪)算法中卡尔曼滤波算法详解

    目录 一 背景详解二 卡尔曼滤波 Kalman 原理代码实践 三 总结参考文献 一 背景详解 卡尔曼滤波 xff08 Kalman filter xff09 是一种高效的自回归滤波器 xff0c 它能在存在诸多不确定性情况的组合信息中估计动
  • 结合AutoLayout实践iOS8上UITableViewCell高度的自适应

    上一次写博客已经是4个月之前了 xff0c 不是不想写 xff0c 只是没找到太合适的题目 xff0c 本人秉着宁缺毋滥的原则 好吧 xff0c 我承认是我懒惰了 四个月 xff0c 虽然陆续提交了几个项目 xff0c 但是所学所用变化不大
  • 正则表达式

    概述 1 正则表达式功能非常强大 xff0c 但是学习难度也很大 正则表达式是一套独立的语法 xff0c 和Python并没有任何相似和相关之处 xff0c 只不过是Python提供了对正则表达式的支持 2 正则表达式是编写网络爬虫提取特定
  • PaddleX 在windows10使用paddle_inference部署C#打包dll全教程

    目录 一 基本环境配置1 1 Visual Studio2019安装1 2 CUDA10 2安装1 3 安装Cudnn1 4 下载PaddleX develop1 5 下载paddleinference1 6 下载opencv3 4 61
  • Jetson Nano Pytorch+TensorRT环境配置系统移植到另一张TF卡

    PS 使用本文章中dd写入的方式 可以用于备份TF卡 SD卡 硬盘里操作系统 环境变量和系统数据 随时备份 随时恢复 内容完全一样 目录 PS 使用本文章中dd写入的方式 可以用于备份TF卡 SD卡 硬盘里操作系统 环境变量和系统数据 随时
  • Stable Diffusion+ControlNet+Lora 指导AI+艺术设计的WebUI全流程使用教程

    目录 一 背景知识1 1 Stable Diffusion背景知识1 2 ControlNet 背景知识 二 使用方法2 1 环境配置2 2 运行WebUI 三 背景知识3 1 Stable Diffusion参数详解3 2 Control
  • Ubuntu20.04+Windows10双系统迁移新硬盘并解决引导损坏全流程总结

    目录 一 备份原有系统1 1 压缩原系统的 目录 二 安装新系统三 迁移系统四 引导修复4 1 Ubuntu引导修复4 2 Win10引导修复4 3 双系统grub修复 因工作需要 xff0c 欲将Ubuntu系统迁移到一块全新SSD中 x
  • Ubuntu20.04使用多卡训练HyperNetwork模型和LoRA模型全流程及疑难问题解决方案

    目录 一 LoRA模型多卡训练1 1 安装xformer等库1 2 设置路径1 3 多卡训练 二 HyperNetwork模型多卡训练2 1 HyperNetwork通过WebUI训练 疑难报错解决方案多卡训练报错 软硬件配置 xff1a
  • 【原创】SystemVerilog和Verilog中的表达式位宽

    Verilog和SystemVerilog作为一种 松散类型 的语言已经被很多工程师广泛的用于设计验证领域 xff0c 但是这并不是说各种电路结构或者验证环境中就可以肆无忌惮的随意使用 xff0c 特别是在不同位宽的信号进行计算时 xff0
  • java反射获取子类或者父类的属性值

    方法介绍 1 获取所有属性 span class token keyword private span span class token keyword static span span class token class name Lis
  • momentjs 常用总结

    平时在工作中经常需要对时间进行处理 xff0c 用momentjs 可以快速又方便的对时间格式进行处理 1 let time 61 moment 输出当前国际化时间 相当于 newDate 2 let time 61 moment X fo
  • 第一次CSP模拟-A-咕咕东的奇遇

    咕咕东是个贪玩的孩子 xff0c 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 xff0c 最初指向字母a 咕咕东每次可以顺时针或者逆时针旋转一格 例如 xff0c a
  • week4作业-C-TT的神秘礼物

    TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务内容是
  • UIScrollView的作用原理,实现scrollView传递touch事件给子视图

    span style font family none 我们知道当多个视图进行叠加的时候 xff0c touch事件是作用到最上面的视图上 xff0c 但是如果父视图是UIScrollView xff0c 如果默认 xff0c 可能touc
  • win10虚拟机VMware安装homeassistant镜像

    从今天开始 xff0c 我开始倒腾智能家居 xff0c 谈到智能家居就离不开一个开源的家庭智能控制系统home assistant 这个home assistant可以连接很多智能设备 之后 xff0c 我也会把自己在这过程中学习到的东西或
  • hadoop集群环境搭建

    目录 思路 配置master服务器 配置slave服务器 启动 运行example 常见报错 多次初始化导致master和slave的clusterID的不一致 INFO mapreduce Job Running job job 1647
  • zookeeper集群环境搭建

    目录 第一台主机 其他两台主机 启动 常见报错 Starting zookeeper FAILED TO START 3台Linux虚拟机 xff0c 与 hadoop环境搭建 相同 第一台主机 1 下载安装包 在 Index of apa
  • HBase分布式环境搭建

    目录 第一台主机 其他两台主机 启动 常见报错 SLF4J Class path contains multiple SLF4J bindings 3台Linux虚拟机 xff0c 与 zookeeper环境搭建 相同 xff0c 承接上文
  • Linux报错集锦

    收录平时使用linux时遇到的各种报错 xff0c 方便以后查阅 xff0c 如果大家遇到同样的问题时也能节省一些时间 原文链接 xff08 会有更新 xff09 https thrilling coffee afc notion site
  • 【20200602程序设计思维与实践 Week15 作业】

    目录 B ZJM 与生日礼物题意思路代码 C ZJM 与纸条题意思路代码 B ZJM 与生日礼物 题意 ZJM收到了Q老师送来的生日礼物 xff0c 但是被 Q老师加密了 只有 ZJM 能够回答对Q老师的问题 xff0c Q老师才会把密码告