news 2026/6/4 16:39:15

UVa 384 Slurpys

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 384 Slurpys

题目描述

基于一组约束识别字符串是一个常见的计算问题。

Slurpy\texttt{Slurpy}Slurpy是一种具有特定属性的字符串。你的程序将读取字符串并判断它们是否为Slurpy\texttt{Slurpy}Slurpy

定义

Slump\texttt{Slump}Slump是一个满足以下属性的字符串:

  1. 第一个字符是DE
  2. 第一个字符后跟一个或多个F
  3. F的序列后跟一个Slump\texttt{Slump}Slump或一个G,以此结束整个Slump\texttt{Slump}Slump
  4. 除此之外都不是Slump\texttt{Slump}Slump

例如:DFFEFFFG是一个Slump\texttt{Slump}Slump(以D开头,后跟两个F,再跟Slump\texttt{Slump}SlumpEFFFG

Slimp\texttt{Slimp}Slimp是一个满足以下属性的字符串:

  1. 第一个字符是A
  2. 如果是两个字符的Slimp\texttt{Slimp}Slimp,则第二个字符是H
  3. 如果不是两个字符,则属于以下两种形式之一:
    • A+B+Slimp\texttt{Slimp}Slimp+C
    • A+Slump\texttt{Slump}Slump+C
  4. 除此之外都不是Slimp\texttt{Slimp}Slimp

Slurpy\texttt{Slurpy}Slurpy是一个由Slimp\texttt{Slimp}Slimp后跟Slump\texttt{Slump}Slump组成的字符串。

输入格式

第一行包含整数NNN1≤N≤101 \leq N \leq 101N10),表示字符串数量。接下来NNN行,每行包含一个由字母组成的字符串(长度1∼601 \sim 60160)。

输出格式

第一行输出SLURPYS OUTPUT。接下来NNN行,每行输出YESNO。最后一行输出END OF OUTPUT

样例输入

2 AHDFG DFGAH

样例输出

SLURPYS OUTPUT YES NO END OF OUTPUT

题目分析

问题的本质

这是一个递归下降解析问题。需要根据给定的上下文无关文法判断字符串是否属于定义的语言。

文法规则

Slump → D F+ (Slump | G) Slimp → A H | A B Slimp C | A Slump C Slurpy → Slimp Slump

解析方法

使用递归下降解析器,维护一个全局位置指针,尝试匹配规则。


参考代码

// Slurpys// UVa ID: 384// Verdict: Accepted// Submission Date: 2016-06-30// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;boolisC();boolisSlump();boolisSlimp();boolisSlurpy();string line;intposition;// 解析字符 'C'boolisC(){if(position<line.length()&&line[position]=='C'){position++;returntrue;}returnfalse;}// 解析 Slump: D/E F+ (Slump | G)boolisSlump(){if(position>=line.length())returnfalse;if(line[position]!='D'&&line[position]!='E')returnfalse;position++;// 至少一个 FboolatLeastOneF=false;while(position<line.length()&&line[position]=='F'){atLeastOneF=true;position++;}if(!atLeastOneF)returnfalse;// 以 G 结尾if(position<line.length()&&line[position]=='G'){position++;returntrue;}// 或者后面跟一个 SlumpreturnisSlump();}// 解析 Slimp: A H | A B Slimp C | A Slump CboolisSlimp(){if(position>=line.length()||line[position]!='A')returnfalse;position++;// 情况1:AHif(position<line.length()&&line[position]=='H'){position++;returntrue;}// 情况2:A B Slimp Celseif(position<line.length()&&line[position]=='B'){position++;if(!isSlimp())returnfalse;if(position<line.length()&&line[position]=='C'){position++;returntrue;}returnfalse;}// 情况3:A Slump Celse{if(!isSlump())returnfalse;if(position<line.length()&&line[position]=='C'){position++;returntrue;}returnfalse;}}// 解析 Slurpy: Slimp + SlumpboolisSlurpy(){intsavedPos=position;if(isSlimp()&&isSlump()&&position==line.length())returntrue;position=savedPos;returnfalse;}intmain(intargc,char*argv[]){ios::sync_with_stdio(false);string firstLine;getline(cin,firstLine);intn=stoi(firstLine);cout<<"SLURPYS OUTPUT"<<endl;for(inti=1;i<=n;i++){getline(cin,line);position=0;cout<<(isSlurpy()?"YES":"NO")<<endl;}cout<<"END OF OUTPUT"<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 16:38:35

SourceGit:从命令行到可视化,5个提升Git效率的思维转变

SourceGit&#xff1a;从命令行到可视化&#xff0c;5个提升Git效率的思维转变 【免费下载链接】sourcegit Windows/macOS/Linux GUI client for GIT users 项目地址: https://gitcode.com/gh_mirrors/so/sourcegit 你是否曾经在复杂的Git命令中迷失方向&#xff1f;是否…

作者头像 李华
网站建设 2026/6/4 16:36:11

如何免费激活IDM完整版:终极指南与3分钟快速教程

如何免费激活IDM完整版&#xff1a;终极指南与3分钟快速教程 【免费下载链接】IDM-Activation-Script-ZH IDM激活脚本汉化版 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script-ZH 还在为Internet Download Manager&#xff08;IDM&#xff09;的30天…

作者头像 李华
网站建设 2026/6/4 16:35:22

实战部署wvp-GB28181-pro:构建企业级视频监控平台的完整指南

实战部署wvp-GB28181-pro&#xff1a;构建企业级视频监控平台的完整指南 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR接入…

作者头像 李华
网站建设 2026/6/4 16:29:00

基于同心互质圆阵与稀疏贝叶斯学习的高自由度DOA估计技术

1. 项目概述&#xff1a;从传统阵列到稀疏贝叶斯学习的DOA估计革新在雷达、声呐、无线通信和电子战侦察这些领域&#xff0c;搞清楚一个信号“从哪儿来”是第一步&#xff0c;也是最关键的一步。这就是方向到达角&#xff08;Direction of Arrival, DOA&#xff09;估计要解决的…

作者头像 李华
网站建设 2026/6/4 16:29:00

GUI是什么?超级详细

图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff09;&#xff0c;是计算机图形学技术的一种&#xff0c;它一般由窗口、下拉菜单或者对话框等图形化的控件组成。用户通过点击菜单栏、按钮或者弹出对话框的形式来实现与机器的交互&#xff0c;GU…

作者头像 李华
网站建设 2026/6/4 16:27:53

AI改写搜索规则!首届GEO峰会点明:企业流量竞争从排名转向AI信任

2026年5月29日&#xff0c;由玫瑰互动主办的2026第一届GEO优化行业峰会在北京顺利召开。本次峰会以“白帽时代的AI流量入口与信任重构”为主题&#xff0c;汇集行业主管机构、品牌企业、技术服务商及媒体代表共200余人&#xff0c;是国内首个以白帽合规为核心的GEO专业盛会。峰…

作者头像 李华