当前位置:网站首页>第九届 蓝桥杯 决赛 交换次数
第九届 蓝桥杯 决赛 交换次数
2022-07-07 15:32:00 【@小红花】
问题描述
IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。
招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:
ABABTATT,这使得应聘者十分别扭。
于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:
BBAAATTT 这样的形状,当然,也可能是:
AAABBTTT 等。现在,假设每次只能交换2个席位,并且知道现在的席位分布,
你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。
输出是一个整数,表示至少交换次数。比如,输入:
TABTABBTTTT程序应该输出:
3再比如,输入:
TTAAABB程序应该输出:
0我们约定,输入字符串的长度n 不大于10万
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
Java
import java.util.Scanner;
public class 交换次数 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] ss = scanner.next().toCharArray();
//六种排列组合的方案
char[][] c = {
{'B','A','T'},
{'B','T','A'},
{'A','B','T'},
{'A','T','B'},
{'T','A','B'},
{'T','B','A'}
};
int ans = Integer.MAX_VALUE;
for(int i = 0;i < 6;i++) {
ans = Math.min(ans,fun(ss,c[i][0],c[i][2],c[i][2]));
}
System.out.println(ans);
}
//将整个字符串分为三个区域
public static int fun(char[] ss,char A,char B,char C) {
//A区域中a的个数
int a = 0;
//B区域中b的个数
int b = 0;
//A区域中非a的个数
int Abc = 0;
//A区域中b的个数
int Ab = 0;
//B区域中a的个数
int Ba = 0;
//B区域中c的个数
int Bc = 0;
int len = ss.length;
//求出A和B两个区域占的大小
for(int i = 0;i < len;i++) {
if(ss[i] == A) a++;
if(ss[i] == B) b++;
}
for(int i = 0;i < a;i++) {
if(ss[i] != A) Abc++;
if(ss[i] == B) Ab++;
}
for(int i = a;i < a + b;i++) {
if(ss[i] == A) Ba++;
if(ss[i] == C) Bc++;
}
//最小交换次数是:将A区域非a的交换出去,B区域非b的交换出去
//因为A区域中有b,B区域中有a,他们直接交换就行,再减去重复的交换次数
return Abc + Bc + Ba - Math.min(Ba, Ab);
}
}
边栏推荐
- 23. 合并K个升序链表-c语言
- Talk about the realization of authority control and transaction record function of SAP system
- 【PHP】PHP接口继承及接口多继承原理与实现方法
- 预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
- Lie cow count (spring daily question 53)
- Laravel constructor and middleware execution order
- 面试题 01.02. 判定是否互为字符重排-辅助数组算法
- 深度监听 数组深度监听 watch
- Ray and OBB intersection detection
- dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码
猜你喜欢
Have fun | latest progress of "spacecraft program" activities
低代码(lowcode)帮助运输公司增强供应链管理的4种方式
预测——灰色预测
Statistical learning method -- perceptron
【MySql进阶】索引详解(一):索引数据页结构
正在准备面试,分享面经
Horizontal and vertical centering method and compatibility
Sort out several important Android knowledge and advanced Android development interview questions
Three. JS series (2): API structure diagram-2
ByteDance Android gold, silver and four analysis, Android interview question app
随机推荐
Statistical learning method -- perceptron
JS中null NaN undefined这三个值有什么区别
平衡二叉树(AVL)
PHP realizes wechat applet face recognition and face brushing login function
[vulnhub range] thales:1
Three. JS series (1): API structure diagram-1
php 自带过滤和转义函数
AutoLISP series (3): function function 3
Cesium(3):ThirdParty/zip. js
[designmode] facade patterns
Laravel post shows an exception when submitting data
[Android -- data storage] use SQLite to store data
最新Android高级面试题汇总,Android面试题及答案
spark调优(三):持久化减少二次查询
1亿单身男女“在线相亲”,撑起130亿IPO
HAVE FUN | “飞船计划”活动最新进展
编程模式-表驱动编程
射线与OBB相交检测
Prediction - Grey Prediction
How can laravel get the public path