蓝桥杯2018年真题-交换次数
迪丽瓦拉
2024-06-03 23:45:36
0次

知识点:无穷大的定义0x3f3f3f3f

0x3f3f3f3f是什么意思???

为什么无穷大总是0x3f3f3f3f而不是0x7fffffff?

题目:

IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。

招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:

ABABTATT,这使得应聘者十分别扭。

于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:

BBAAATTT 这样的形状,当然,也可能是:

AAABBTTT 等。

现在,假设每次只能交换2个席位,并且知道现在的席位分布,

你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。

输入:

输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。

n<=104

输出:

输出是一个整数,表示至少交换次数。

思路:

暴力:6种排列方式

宏观可分为3个区A\B\C

交换次数=A区非A个数+B区C的个数+B区A的个数-min(A区B的个数,B区A的个数)

然后比较6种排列中,交换次数最小的是几次

代码:

#include
#include
#include
using namespace std;
string str;
int mn = 0x3f3f3f3f;//定义一个无穷大
char t[6][4] = { "ABT", "ATB", "BAT","BTA","TAB","TBA"};
int changes(char A, char B, char C) {int a=0, b=0, c=0,num=0,numb=0,numa=0,numc=0;for (int i = 0; i < str.length(); i++) {if (str[i] == A)a++;else if (str[i] == B)b++;else if (str[i] == C)c++;}for (int i = 0; i < a; i++) {if (str[i] != A)num++;if (str[i] == B)numb++;}for (int i = a; i < a + b; i++) {if (str[i] == A)numa++;if (str[i] == C)numc++;}num += numa + numc - min(numa,numb);return num;
}int main() {cin >> str;for (int i = 0; i < 6; i++) {mn = min(mn, changes(t[i][0], t[i][1], t[i][2]));}cout << mn << endl;return 0;
}

相关内容

热门资讯

活力中国 和美假期(新时代画卷... 本文转自:人民日报  畅快吃  新疆维吾尔自治区库车市阿克吾斯塘乡巴扎上,摊主为顾客递上烤制好的特色...
“感觉有一亿人”!国庆多地景区... 国庆长假进入第三天,各地景区进入游客接待高峰期,有游客感叹:“感觉有一亿人!”而从多地发布的旅游数据...
国庆假期第三天,北京市属公园接... 10月3日,北京青年报记者从北京市公园管理中心获悉,国庆假期第三天,14家市属公园共接待游客78.9...
国庆假期前两天,南京牛首山景区... 现代快报讯(记者 赵丹丹)这个国庆假期,南京牛首山文化旅游区迎来了四面八方的游客。10月3日,现代快...
江西多家景区场馆最新通知:预约... 来源:江西日报截至10月3日江西省内多个重点场馆与景区已出现预约满员、停售的情况滕王阁旅游区10月1...
晶采观察丨从“看景”到“入景”...   国庆假期正在火热进行中,如果用一个词来概括今年国庆文旅市场,我认为是“融合”。文化、旅游、商业、...
【甘快看】古浪县国庆假期文旅活... 中国甘肃网10月2日讯 2026年国庆节期间,古浪县深挖本土红色治沙、民俗非遗、夜游文旅特色资源,精...
【甘快看】从河西“三马”看祁连... 从武威雷台汉墓中凌空奔腾的铜奔马,到祁连山下千年不息的军马嘶鸣,再到嘉峪关魏晋墓砖上定格的驿使。这可...
美景添韵味 市集聚烟火 守护保... 国庆假期,金城秋意渐浓。黄河北岸的安宁区,山林游园、湿地步道、潮流街巷次第铺展,山水风光与市井烟火交...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...