思路:
首先,字符串的大小是8e3,三个for循环肯定会TLE,所以直接否定暴力的想法。
这道题应该以CHN中的H为跳板,简单的思路如下,
(1)如果碰到C,就将记录C数量的变量++;
(2)如果碰到H,就从该点的后一个点开始循环,一直到最后,如果在循环中碰到N,结果就加上C的数量;
(3)如果碰到N,就直接continue;
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stdlib.h>
typedef long long ll;
using namespace std;
int main()
{
string s;
cin >> s;
ll len = s.length();
ll x=0;
ll ans=0;
for (int i=0;i<len;i++)
{
if(s[i]=='C') x++;
else if(s[i]=='H')
{
for (int j=i+1;j<len;j++)
{
if(s[j]=='N') ans+=x;
}
}
}
cout << ans << endl;
return 0;
}



京公网安备 11010502036488号