题目描述
代码实现
让越靠近左边的G越放到左边。【因为把在最右边的G放到最左边的话,不仅“路程”太远,还会把左边那些G给整体往右挤了,这不是成了负作用了嘛。】
#include<iostream>
using namespace std;
int main(){
char a[4]={'B','G','B','G'}; //给定一个字符数组
//让G--左边,B--右边
//我们以G为研究对象(B也可以,计算量是一样的)
int count=0; //设置计数器,代表第几个G,也就是它应该在最左边第几个位置上
int sum=0; //总交换次数
for(int i=0;i<4;i++){
if(a[i]=='G'){
sum+=i-count;
count++;
}
}
cout<<"最少交换次数:"<<sum;
return 0;
}