日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【题解】FBI序列

發(fā)布時間:2023/12/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【题解】FBI序列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

? ? ? ? 兩伙外星人策劃在未來的XXXX年侵略地球,侵略前自然要交換信息咯,現(xiàn)在,作為全球保衛(wèi)隊隊長,你截獲了外星人用來交換信息的一段僅由“F”,“B”,“I”,“O”組成的序列。為了保衛(wèi)地球和平,為了使家園不受破壞,你要機智地破解密碼,勇敢地迎擊外星人!記住,你不是一個人在戰(zhàn)斗!你不是一個人!你的背后是千千萬萬的地球人!

?

輸入輸出格式

輸入格式

? ? ? ? 一組僅由“F”、“B”、“I”、“0”組成的序列(“F”、“B”、“I”、“0”這四個字母中的某一個或某幾個不一定會出現(xiàn),且保證序列長度≤2000)

? ? ? ? 規(guī)定這個序列所要傳達的信息就是這組序列有多少個“FBI”(子序列)

?

輸出格式

? ? ? ? 一行,一個數(shù),表示這組序列有多少個“FBI”的子序列(保證答案≤2^31,且FBI必須是正序,即IBF或者BIF或者FIB或者BFI或者IFB都不能算是一個FBI)

?

輸入輸出樣例

輸入樣例

FBIIBFOI

?

輸出樣例

4

?

題解

? ? ? ? 樸素做法很明顯,枚舉F,B,I的位置,暴力統(tǒng)計,時間復(fù)雜度O(n3),數(shù)據(jù)水的話還能卡過去。

? ? ? ? 顯然我們不能用這種做法。可以考慮枚舉B的位置i(假設(shè)從1開始計數(shù)),然后統(tǒng)計字符串的第一位到第i-1位里F的數(shù)量和第i+1位到第n位I的數(shù)量,根據(jù)乘法原理統(tǒng)計結(jié)果,而事實上統(tǒng)計F,I的數(shù)量也可以用兩個變量維護,枚舉i的過程中判斷要不要更改這兩個變量,這樣即可做到O(n)的時間復(fù)雜度。

#include <iostream> #include <cstdio> #include <cstring>using namespace std;char s[2005]; int len; int cnt_F, cnt_I; int ans;int main() {scanf("%s", s);len = strlen(s);for(register int i = 0; i < len; ++i){if(s[i] == 'I') ++cnt_I;}for(register int i = 0; i < len; ++i){if(s[i] == 'B') ans += cnt_F * cnt_I;else if(s[i] == 'F') ++cnt_F;else if(s[i] == 'I') --cnt_I;}printf("%d", ans); } 參考程序

?

轉(zhuǎn)載于:https://www.cnblogs.com/kcn999/p/10353481.html

總結(jié)

以上是生活随笔為你收集整理的【题解】FBI序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。