题解 P7313 【[COCI2018-2019#3] Magnus】

Griseo_nya

2021-02-05 08:58:23

Solution

因为我们删除任意个字母的目的是凑出 HONI ,所以我们只需要删去 H 和 O , O 和 N ,以及 N 和 I 之间的字母即可。 或者说,我们只需要遍历字符串,每次看本位字符是否与当前匹配到的字符相同即可。 下面是代码的说: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; const string f="HONI"; int k=0,ans=0; for(int i=0;i<s.size();i++){ if(s[i]==f[k]){ //如果当位匹配上了 if(++k==4)k=0,++ans; //我们可以把 k+1 内嵌在判断式里,如果 k==0 则从头再开始匹配, ans+1 } } cout<<ans; //输出答案 return 0; } ```