首页 > 其他分享 >[题解][2021浙江CCPC] String Freshman

[题解][2021浙江CCPC] String Freshman

时间:2024-04-25 21:56:28浏览次数:21  
标签:第一位 匹配 String int 题解 CCPC 算法 ans

题目描述

有一份错误的字符串匹配算法,计算S串里有几个T串(只要有一个元素不同,则视为不同的串)。
现在输入T串,判断能否构造S串让该算法不通过。

int Find_Answer () {
  int j = 1 , ans = 0;
  for ( int i = 1; i <= n ; i ++) {
    if ( S [ i ] != T [ j ]) j = 1;
    if ( S [ i ] == T [ j ]) j ++;
    if ( j > m ) {
      ans ++;
      j = 1;
    }
  }
  return ans ;
}

题解

先分析题目给出的算法,可以发现两点:

  • 每次匹配成功,会在S串的下一位进行匹配。说明不会使用S串重复的位置进行匹配。若T=abab,S=ababab,该算法会在匹配完abab后,从第三个ab继续匹配,显然答案错误。
  • 每次匹配失败,会从T串的第一位进行匹配。若T=abac,S=ababac,该算法会在匹配完aba后,由于第四位匹配不上,让T串继续从第一位匹配,显然答案错误。

综合以上两点,可以发现,一旦KMP的next数组里面有不为0的数,该算法就不能通过。
也可以换一个理解方式:一旦T串存在不在第一位,但和第一位相同的字母,该算法便不能通过。

代码

//
// Created by ZWZWW on 2024/4/24.
//
#include<bits/stdc++.h>
#define int long long
using namespace std;
char s[100010];

signed main(){
    int m;
    cin >> m;
    for (int i = 1; i <= m; i++) {
        cin >> s[i];
    }
    for (int i = 2; i <= m; i++) {
        if (s[i] == s[1]){
            cout << "Wrong Answer\n";
            return 0;
        }
    }
    cout << "Correct\n";
}

标签:第一位,匹配,String,int,题解,CCPC,算法,ans
From: https://www.cnblogs.com/zwzww/p/18158711

相关文章

  • 「实用」如何在洛谷上正确的抄题解
    前言看到这个标题,估计一群人又要开始躁动不安了……等一下,如果是洛谷的管理员看到了这篇文章,不要把我给封了,我是在教各位刚入门的小萌新,也就是以后的神犇们如何切水题呢!本文没有任何反对洛谷的意思,坚决支持kkk!好了,进入今天的正题,“如何在洛谷上正确的抄题解”这个标题直接概括......
  • [题解]CF61E Enemy is weak
    CF61EEnemyisweak如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。递推方式见下图。第一行全为\(1\)。要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。要填第\(3\)行的值,就往前找所有\(>\)当前元素的位置,把......
  • 「洛谷」题解:P1996 约瑟夫问题
    题目传送门先看题目:题目描述\(n\)个人围成一圈,从第一个人开始报数,数到\(m\)的人出列,再由下一个人重新从\(1\)开始报数,数到\(m\)的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰......
  • [题解] [NOIP2011 提高组] Mayan 游戏
    [题解][NOIP2011提高组]Mayan游戏题目描述有一个\(7\)行\(5\)列的格子棋盘,有的格子上有方块。方块有重力,即如果一个方块下面没有其他方块,他就会往下掉,直到触底或者下面有方块为止。每个方块都有自己的颜色,如果连着三个竖着或者横着的方块颜色相同,它们就会消除。如果出......
  • CF1774G Segment Covering 题解
    题目链接点击打开链接题目解法这么牛的题!!!我第一眼看到偶\(-\)奇想到的是LGV/xk有一堆线段的题先考虑有没有线段之间的特殊关系这道题中,如果有线段\(x\)包含线段\(y\),则线段\(x\)是无用的,因为如果选了\(x\),那么选不选\(y\)无所谓,因为是偶\(-\)奇,所以贡献抵消了......
  • 重庆软航H5 PDF签章产品经nginx代理之后在浏览器中在线打开PDF盖章时提示:签章失败:网络
    问题现象:问题描述:在系统中集成了软航H5PDF签章产品,软航H5PDF签章产品的对应服务是通过nginx代理的,在奇安信浏览器中在线打开PDF点击产品的工具栏上的盖章按钮:选定印章之后,在PDF文档上选定盖章位置之后,提示:签章失败:网络错误。最近在做这个软航H5PDF电子签章产品的测试,就简......
  • CF518F 题解
    观察到一条管道的拐点数量只有\(3\)种可能的取值:没有拐点,即管道呈现一条直线。有\(1\)个拐点。有\(2\)个拐点。分别对应了下面三种情况:....#....#.*..#*********..***...#....#*...#*.#.........
  • 2023CPCC河南省赛题解+总结
    2023CPCC河南省赛题解+总结比赛链接:https://codeforces.com/gym/104354答题情况:答题情况开题顺序是:A-F-H-K-E-B-G题面链接:https://codeforces.com/gym/104354/attachments/download/20061/statements_2.pdfProblemA.小水獭游河南签到题,队友写的题意:  给你一个字符......
  • git命令下,mac环境下载依赖相关报错问题解决方案
    1.安装fundry框架curl-Lhttps://foundry.paradigm.xyz|bash2.写入环境变量source/Users/xx/.bashrc3.foundryup问题1报错:致命错误:无法访问'https://github.com/foundry-rs/forge-std解决方案:设置hosts文件:添加指定url的ip地址:140.82.112.4github.com185.1......
  • 【题解】A566.三点共线
    题目大意,给定在平面直角坐标系中的多个点,判断有多少个三元组\((A,B,C)\)满足共线性质。题目链接:A566.三点共线。大题思路就是暴力所有的三元组,判断三个元素的斜率是否相同即可。其实还有其他方法可以做,我个人感觉用斜率法最简单。有几点需要注意:在计算斜率的时候,如果多......