此题很简单。(然而我为什么WA了好多次),用排列组合组合的知识来写:
遇到z,记录器a加一。
遇到y,总方案数+=a*(a-1)/2
最后:
一定要开long long
AC CODE:
#include<iostream>
using namespace std;
int n,m;
long long a,b;//a为z的出现次数,b为zzy出现次数
int main(){
string s;
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='z') a++;
if(s[i]=='y') {//找到y,可以和z配,两个z和一个y可以配一个
b+=a*(a-1)/2;
}
}
cout<<b;
return 0;
}