網易2017春招筆試 調整隊形

2021-08-14 22:40:28 字數 1199 閱讀 9667

題目

在幼兒園有n個小朋友排列為乙個隊伍,從左到右乙個挨著乙個編號為(0~n-1)。其中有一些是男生,有一些是女生,男生用』b』表示,女生用』g』表示。小朋友們都很頑皮,當乙個男生挨著的是女生的時候就會發生矛盾。作為幼兒園的老師,你需要讓男生挨著女生或者女生挨著男生的情況最少。你只能在原隊形上進行調整,每次調整只能讓相鄰的兩個小朋友交換位置,現在需要盡快完成隊伍調整,你需要計算出最少需要調整多少次可以讓上述情況最少。例如:

ggbbg -> ggbgb -> gggbb

這樣就使之前的兩處男女相鄰變為一處相鄰,需要調整隊形2次

輸入描述:

輸入資料報括乙個長度為n且只包含g和b的字串.n不超過50.

輸出描述:

輸出乙個整數,表示最少需要的調整隊伍的次數

輸入例子:

ggbbg

輸出例子:

分析:

經過分析,我們可以得到這麼乙個結論:將男孩移到最左邊,或者將女孩移到最左邊,這兩種情況均能滿足結果。

如果有b個男孩,則移到最左邊的index分別為:0,1,2…b-1,所以所有index的和為(b-1)*b/2

一次遍歷,計算目前男孩所在的index的和為sumb,則sumb減去上面的和就是所求的結果。

因此只要一次遍歷,計算男孩的個數和男孩所在的index的和,求乙個差值就行了。女孩同理,得到另乙個差值。

最後兩個差值比較求最小值。

**如下:

#include 

#include

using

namespace

std;

int main()

else

}int ret1 = sumb - b * (b - 1) / 2;

int ret2 = sumg - g * (g - 1) / 2;

cout

<< min(ret1, ret2) << endl;

return

0;}

網易2017演算法題 調整隊形

題目是這樣的 在幼兒園有n個小朋友排列為乙個隊伍,從左到右乙個挨著乙個編號為 0 n 1 其中有一些是男生,有一些是女生,男生用 b 表示,女生用 g 表示。小朋友們都很頑皮,當乙個男生挨著的是女生的時候就會發生矛盾。作為幼兒園的老師,你需要讓男生挨著女生或者女生挨著男生的情況最少。你只能在原隊形上...

網易面試題 調整隊形

在幼兒園有n個小朋友排列為乙個隊伍,從左到右乙個挨著乙個編號為 0 n 1 其中有一些是男生,有一些是女生,男生用 b 表示,女生用 g 表示。小朋友們都很頑皮,當乙個男生挨著的是女生的時候就會發生矛盾。作為幼兒園的老師,你需要讓男生挨著女生或者女生挨著男生的情況最少。你只能在原隊形上進行調整,每次...

網易2017春招筆試題(2)

程式設計題 集合 時間限制 1秒 空間限制 32768k 小易最近在數學課上學習到了集合的概念,集合有三個特徵 1.確定性 2.互異性 3.無序性.小易的老師給了小易這樣乙個集合 s 需要根據給定的w,x,y,z,求出集合中一共有多少個元素。小易才學習了集合還解決不了這個複雜的問題,需要你來幫助他。...