题解:P14466 [COCI 2025/2026 #1] 押韵 / Rima
[COCI 2025/2026 #1] 押韵 / Rima
题意
给定
我们称两个句子是押韵的,当且仅当这两句话的最后一个单词的最后
现在有三种押韵模式:
我们现在要统计这三种押韵模式在每段中出现的次数,当然一段可能会出现多种押韵模式。
思路
我们可以用一个数组
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,d1,d2,d3;
string s[1000086],ss;
bool d(string s1,string s2,int kk){
return s1.size()>=kk&&s2.size()>=kk//判断长度是否大于k
&&s1.substr(s1.size()-kk)==s2.substr(s2.size()-kk);//判断最后k个字符是否相同
}
signed main(){
cin>>n>>m>>k;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>ss;
}
s[i]=ss;//直接统计每行最后一个输入进来的字符串
}
for (int i=1;i<=n;i+=4){//每次按段循环
if (d(s[i],s[i+1],k)&&d(s[i+2],s[i+3],k)){
d1++;//AABB
}
if (d(s[i],s[i+2],k)&&d(s[i+1],s[i+3],k)){
d2++;//ABAB
}
if (d(s[i],s[i+3],k)&&d(s[i+1],s[i+2],k)){
d3++;//ABBA
}
}
cout<<d1<<' '<<d2<<' '<<d3<<'\n';
return 0;
}