💟这里是CS大白话专场,让枯燥的学习变得有趣!
💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!
💟好记性不如烂键盘,自己总结不如收藏别人!
💌 在幼儿园有N个小朋友排列为一队,从左到右一个挨着一个编号为(0~N-1)。其中男生用M表示,女生用F表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少,即男生坐在一起,女生坐在一起。你需要调整当前位置,每次调整只能让相邻的两个小朋友交换位置,现在需要尽快完成队伍调整,计算出最少需要调整多少次。例如: FFMMF -> FFMFM-> FFFMM,需要调整队形2次。
#include <iostream>
using namespace std;
int main(){
int N;
string s;
int femaleNum=0,maleNum=0,femaleTotal=0,maleTotal=0;
cin >> N;
getchar();
getline(cin, s);
for(int i=0;i<N;i++){
//如果是女生
if(s[i]=='F'){
femaleNum++;
femaleTotal+=i;
}
//如果是男生
if(s[i]=='M'){
maleNum++;
maleTotal+=i;
}
}
//如果把男生放在左边
maleTotal = maleTotal-(0+maleNum-1)*maleNum/2;
//如果把女生放在左边
femaleTotal = femaleTotal-(0+femaleNum-1)*femaleNum/2;
printf("%d", maleTotal > femaleTotal ? femaleTotal: maleTotal);
return 0;
}