在幼兒園有n個小朋友排列爲一個隊伍,從左到右一個挨着一個編號爲(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友們都很頑皮,當一個男生挨着的是女生的時候就會發生矛盾。作爲幼兒園的老師,你需要讓男生挨着女生或者女生挨着男生的情況最少。你只能在原隊形上進行調整,每次調整隻能讓相鄰的兩個小朋友交換位置,現在需要儘快完成隊伍調整,你需要計算出最少需要調整多少次可以讓上述情況最少。例如:
GGBBG -> GGBGB -> GGGBB
這樣就使之前的兩處男女相鄰變爲一處相鄰,需要調整隊形2次
輸入描述:
輸入數據包括一個長度爲n且只包含G和B的字符串.n不超過50.
輸出描述:
輸出一個整數,表示最少需要的調整隊伍的次數
輸入例子:
GGBBG
輸出例子:
2
def read_data():
s = raw_input()
return s
def caculate_count(s):
s_length = len(s)
boycount, girlcount, boytotal, girltotal = 0, 0, 0, 0
for i in range(s_length):
if s[i]=='B':
boycount +=1
boytotal +=i
else:
girlcount +=1
girltotal +=i
boytotal -= (boycount-1)*boycount/2;
girltotal -=(girlcount-1)*girlcount/2
return boytotal if boytotal<girltotal else girltotal
s = read_data()
print caculate_count(s)
備註:考慮最初狀態和最終狀態,不用考慮中間過程。兩兩交換,也就是計算起始點和目標點次數。