Java排队吃饭问题
来源:互联网 发布:python程序员待遇 编辑:程序博客网 时间:2024/05/02 02:44
某公司员工到餐厅吃饭,吃饭要排队。因为公司的员工都是有素质的,让女同事排在队伍的前面。只要男同事发现自己的后面是一位女同事的话,该男同事将会与后面的女同事调换位置,调换位置需要1秒钟的时间。在同一时间可能会有多位男同事与后面女同事调换位置。我们需要求队伍调整完毕需要的总时间。M代表男同事,F代表女同事,排队顺序使用字符串,字符串的开头代表队伍的最前面。现在举个例子,假设初始的队伍是”MFMF“,那么第一秒中将有两位男同事与后面的女同事调换位置,此时的队伍变成”FMFM“,然后再接下来的一秒钟有一位男同事与后面女同事调换位置,现在队伍就变成”FFMM“,这样所有的女同事都排在男同事的前面,总时间用了2秒钟。(本题来源于互联网)
1.求出所有字串"MF"在队伍的位置
public static List<Integer> getIndex(String str) { List<Integer> list = new ArrayList<Integer>(); for (int index = 0; index < str.length();) { int j = str.indexOf("MF", index); if(j==-1) break;list.add(j); index = j + 2;} return list;}2.一次调换位置
public static String replace(String str, List<Integer> list) { char[] c = str.toCharArray(); for (int i = 0; i < list.size(); i++) { c[list.get(i)] = 'F'; c[list.get(i) + 1] = 'M';}return new String(c);}
3.计算"MF"在队伍中出现的次数
public static Integer getCount(String str) {Integer i = 0;for (int index = 0; index < str.length();) {int j=str.indexOf("MF", index);if(j==-1)break;i++;index = j + 2;}return i;}
4.递归求出队伍好调整需要的总时间
public static Integer getResult(String str) {if (getCount(str) == 0) {return 0;}return getResult(replace(str, getIndex(str)))+1;}
0 0
- Java排队吃饭问题
- java多线程哲学家思考吃饭问题
- 贪心算法-排队问题-JAVA
- 【Java】同步关键字就解决哲学家吃饭问题
- 排队问题
- 排队问题
- 排队问题
- 排队问题
- 哲学家吃饭问题
- 11.3 吃饭问题
- 圆桌吃饭问题
- 死锁—哲学家吃饭问题
- 问题 X: 排队问题
- 递归求解排队进电影院问题,附带JAVA代码
- 吃饭~~~
- 吃饭
- 吃饭
- 吃饭
- java和c++语言编程的异同之输出制定范围内的素数
- leetcode--Number of Islands
- 组合数学:容斥原理及其应用
- cpu变频原理调用clk_prepare_enable异常调试纪实
- C/C++ N皇后问题
- Java排队吃饭问题
- VHDL数据采集
- 备忘:was通过命令行重启应用
- Uva - 810 - A Dicey Problem
- 服务器开发的一点心得体会
- htmlr认识标签
- 递归和迭代的区别
- POJ 1118 && HDU 1432 Lining Up(计算几何)
- Android编译、打包的步骤