再次數學題

給定一個由小寫字母組成的字符串,尋找包含“agnus”(羔羊)的子串的個數。注意:當且僅當兩個子串的起始位置和終點不同時,這兩個子串屬於不同的子串。

 

輸入格式:

只有一個字符串,表示題中所述的字符串。

 

輸出格式:

僅一個數字,表示滿足題意的子串個數。

 

樣例輸入:

agnusbgnus

 

樣例輸出:

6

 

數據範圍:

對於 40%的數據,字符串長度<=1000
對於 100%的數據,字符串長度<=30000

 差一點就不會做了。。。。數學渣

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
char s[30010];
int i,n,ans,x;
int main()
{
    scanf("%s",s);
    n=strlen(s);
    for (i=0;i+4<n-1;i++)        
    if (s[i]=='a'&&s[i+1]=='g'&&s[i+2]=='n'&&s[i+3]=='u'&&s[i+4]=='s')
            {ans+=(i+1-x)*(n-i-4); x=i+1;}
    printf("%d\n",ans);
    
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章