問題描述
乙個間不容髮的時刻:n個牛仔站立於乙個環中,並且每個牛仔都用左***指著他旁邊的人!每個牛仔指著他順時針或者逆時針方向上的相鄰的人。正如很多西部片那樣,在這一刻,繩命是入刺的不可惜……對峙的場景每秒都在變化。每秒鐘牛仔們都會分析局勢,當一對相鄰的牛仔發現他們正在互指的時候,就會轉過身。一秒內每對這樣的牛仔都會轉身。所有的轉身都同時在一瞬間發生。我們用字母來表示牛仔所指的方向。「a」表示順時針方向,「b」表示逆時針方向。如此,乙個僅含「a」「b」的字串便用來表示這個由牛仔構成的環。這是由第乙個指著順時針方向的牛仔做出的記錄。例如,牛仔環「abbbabbba」在一秒後會變成「babbbabba」;而牛仔環「babba」會變成「ababb」。 這幅圖說明了「babba」怎麼變成「ababb」 一秒過去了,現在用字串s來表示牛仔們的排列。你的任務是求出一秒前有多少種可能的排列。如果某個排列中乙個牛仔指向順時針,而在另乙個排列中他指向逆時針,那麼這兩個排列就是不同的。
輸入格式
輸入資料報括乙個字串s,它只含有「a」和「b」。
輸出格式
輸出你求出來的一秒前的可能排列數。
資料規模和約定
s的長度為3到100(包含3和100)
樣例輸入
babbbabba
樣例輸出
2樣例輸入
ababb
樣例輸出
2樣例輸入
ababab
樣例輸出
4樣例說明
測試樣例一中,可能的初始排列為:"abbbabbab"和 「abbbabbba」。
測試樣例二中,可能的初始排列為:「aabbb"和"babba」。
根據題意,是要求的一秒前的狀態的種數,那麼一秒前的狀態是將ab變為ba那麼要變回一秒前的狀態只可能是將現在的ba變為ab也可以選擇不變,當然如果將ba變為ab任何一種情況都可以,但是不變的話就要考慮一些情況了,例如bab必須把ba變成ab這一種情況,如果不變的花,那麼一秒前是這個bab這個狀態,現在就應該是bba這個狀態了。那麼有幾種情況直接看**。
由於這是個環,那麼就要考慮首尾在一起的情況,就是說每乙個a或者b都要考慮前面的是a還是b而第乙個還要考慮最後面的,環環相扣不好處理。這裡我首先將第乙個和第二個固定,如果附近有ba出現的話將他們移到第乙個和第二個的位置上(因為是個環,隨便移動不會有影響)然後分別考慮第一二個不變產生的結果數和第一二個變(如果能的話)產生的結果數
下面結合注釋看**。其中dp[i][0]表示當前不變的情況總和,dp[i][1]表示當前變化之後的情況總和,最後的情況應該是這兩種情況加起來,但還要根據後繼的情況進行選擇。
#include
#include
#include
using
namespace std;
void
rotate_right
(string& str)
void
rotate_left
(string& str)
long
long
getcombination
(const string& str)
else
}int cur = str.
length()
-1;//最後乙個的一般情況
dp[cur][0
]= dp[cur -1]
[0]+ dp[cur -1]
[1];
if(str[cur]
=='b'
&& str[cur -1]
=='a'
) dp[cur][0
]= dp[cur -2]
[1];
long
long res = dp[cur][0
];//返回的結果
//如果最後乙個是a開頭是b那麼結果應該等於最後乙個變的情況
if(str[0]
=='b'
&& str[cur]
=='a'
) res = dp[cur -1]
[1];
return res;
}int
main()
cout << res;
return0;
}
藍橋杯 演算法訓練 Lift and Throw
演算法訓練 lift and throw 時間限制 3.0s 記憶體限制 256.0mb 問題描述 給定一條標有整點 1,2,3,的射線.定義兩個點之間的距離為其下標之差的絕對值.laharl,etna,flonne一開始在這條射線上不同的三個點,他們希望其中某個人能夠到達下標最大的點.每個角色只能...
藍橋杯 演算法訓練 數列
題目 演算法訓練 數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,31,3 0 31,3 2,...
藍橋杯 演算法訓練 Glenbow Museum
資料規模和約定 按題目描述所示。問題描述 卡城著名的格林堡博物館是加拿大西部最大的博物館,展品涵蓋了藝術 文化史以及礦物學。如今乙個全新的展區正在被布置,它是專門為你這樣傑出的程式猿 媛 打造的。不幸的是,由於空間不足,博物館打算建造一棟新的建築來重新安置這個展區。新的建築的尺寸和容量將不同於原始的...