纪中暑假集训 2020.08.03【NOIP提高组】模拟 T2:【NOIP2015模拟11.5】Isfind

【NOIP2015模拟11.5】Isfind

Description

纪中暑假集训 2020.08.03【NOIP提高组】模拟 T2:【NOIP2015模拟11.5】Isfind_第1张图片

Input

纪中暑假集训 2020.08.03【NOIP提高组】模拟 T2:【NOIP2015模拟11.5】Isfind_第2张图片

Output

在这里插入图片描述

Sample Input

4 3
acbc
abc
cba
cc

Sample Output

Y
N
Y

Data Constraint

纪中暑假集训 2020.08.03【NOIP提高组】模拟 T2:【NOIP2015模拟11.5】Isfind_第3张图片

反思&题解

比赛&正解思路: 暴力+一个小小的特判,判断如果后面的位置全部无空匹配都无法达到子序列的长度就退出……(这都能A,出题人良心!!!)
反思: 运气出奇迹!!!

CODE

uses math;//由于本人太弱,字符串不会用c++处理,所以打了pascal
var
        n,m,i,j,k:longint;
        s,s1:ansistring;
        f:array[0..1005,0..1005]of longint;
        bz:boolean;
begin
        assign(input,'isfind.in');
        reset(input);
        assign(output,'isfind.out');
        rewrite(output);
        readln(n,m);
        readln(s);
        for k:=1 to m do
        begin
                readln(s1);
                i:=1;
                j:=1;
                bz:=false;
                while (i<=n)and(j<=length(s1)) do
                begin
                        if n-i+1<length(s1)-j+1 then break;
                        if s[i]=s1[j] then
                        begin
                                if j=length(s1) then
                                begin
                                        bz:=true;
                                        break;
                                end
                                else
                                begin
                                        inc(j);
                                end;
                        end;
                        inc(i);
                end;
                if bz then writeln('Y')
                else writeln('N');
        end;
end.

你可能感兴趣的:(题解,反思)