男孩女孩站隊問題

2021-08-17 19:30:29 字數 1056 閱讀 5953

該問題是在上看到的,因**寫的比較優美,故在此記錄一下,日後可以讀一讀。

隊伍裡站著男孩、女孩,男孩用符號b表示,女孩用符號g表示,我們要把隊伍調整為男孩在一邊女孩在一邊,並且只能相鄰的位置的男孩或者是女孩交換位置,求交換次數最少是交換多少次。

ggbbg(最初)ggbgb(交換一次)gggbb(交換兩次,並符合要求)。這樣返回的結果就是2。

首先明確一點,人家只要求求出次數,並不要求實現交換。

顯然我們要考慮男生在左側還是女生在左側,比如ggggbbbg,這樣的顯然是女生在左側的交換次數會更少一些。而bbbbggb顯然是男生在左側的交換次數更少一些,所以我們都需要考慮,最後取小值即可。

resg和resb用來記錄女孩在左邊和男孩在左邊的兩種情況的交換次數。而無論是男孩還是女孩如果他們要實現在左邊,必須要看當前到已經排好的位置之間隔了幾個人,因為只能相鄰位置交換。lg,lb分別代表女生和男生在左邊排好的位置,初始時為0。

比如ggbbg,如果女孩在左邊的話,0位置處不用交換,res=0滿足,lg++,因為第0個位置已經排好了,同理如果男生要在左邊的話,就得到位置2,發現位置2交換到位置0,需要交換2次,resb=2,lb++,因為如果男生要交換到左邊,位置0就是已經是排好的了。

位置1的女孩在交換到左邊,就不用要求到最左邊了,因為位置0已經是女生了。所以因為本身就在位置1出,交換為0,lg++後為2。同理下乙個位置3上的男生也是這樣,只要交換到位置1即可,交換完成後lb++。

可見無論有沒有交換次數的增加,都會使得排好的位置向右移動,用這個指標來衡量女生或者是男生交換過來的次數。

我們最後在來看看那個排在隊尾的女生,她如果要找到自己的同伴可能就需要交換了。

位置4的女孩發現已經有兩個女孩在最左邊等她了,她只需要換到位置2上,用當前位置4-2就是交換次數,最終結果resg=2。

這裡需要注意,因為是lg,lb都是從0開始的。它記錄的是有多少人已經符合要求了,我們下乙個要交換來的人只需要交換到下乙個位置即可,這樣的話,因為從0開始,所以下乙個位置正好就是lg,或者是lb了。

男孩和女孩

一支玫瑰,在男孩眼裡,刺中有花 在女孩眼裡,花中有刺。男孩總是把事情朝最好處去努力,女孩有時偏偏把事情朝最壞處去打算。男孩總是失去了感到輕鬆,女孩子有時得到了反而沉重。男孩常常甘願痛苦而不願遺憾,女孩常常甘願遺憾而不願痛苦。但更多的是,男孩常因痛苦而遺憾,女孩常因遺憾而痛苦。男孩的孤獨,創造優秀 女...

男孩和女孩

在一次兩人共進晚餐的夜晚,女孩跟男孩提出分手的要求,男孩起先楞了一下 然後默默的接受了,女孩說我們還是好朋友,男孩說 恩 對呀 只要你有任何困難我一定會幫你的,然後像平時一樣傻笑,就這樣,平靜的吃完他們的最後一次晚餐。之後男孩還是每天打 給女孩,問他過的怎樣?回到家了嗎?吃飽了嗎?女孩雖然覺得奇怪但...

男孩如何追女孩

未到火候,千萬別說。有些男孩才跟人家約過幾次,就提出要建立更進一步的關係,這十有 要壞湯。愛情上的事妙就妙在一切盡在不言中。說清楚了,話挑明了,反而不美。本來人家肯單獨出來跟你說話,這說明女孩對你不無好感。但是這種好感有時連她們自己都說不清,你卻急於挑明,破壞了這種朦朧美,那就別怪人家敬而遠之以致退...