上机编程调整男孩女孩顺序

1.题目:在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少。你只能在原队形上进行调整,每次调整只能让相邻的两个小朋友交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少。例如:

GGBBG -> GGBGB -> GGGBB

这样就使之前的两处男女相邻变为一处相邻,需要调整队形2次

输入描述:

输入数据包括一个长度为n且只包含G和B的字符串.n不超过50.

输出描述:

输出一个整数,表示最少需要的调整队伍的次数

思想分析:考虑一开始怎么确定是男孩往左还是往右端移动。寻找这个规则不容易,较为复杂。从最终形式出发,其实这是个很容易统计的,最终调整好后无非是BBBGGG或者GGGBBB,我们把两种情况都计算出来,较小的就是所求。

java实现代码:

package com.mytest.test0322;

import java.util.Scanner;

public class my360b {

public static void main(String[] args) {

// 输入GBGBBGGG ----BBB GGGGG 输出:交换5次

Scanner in = new Scanner(System.in);

while (in.hasNext()) {

int count = 0;

String str = in.nextLine();

for (int i = 0; i < str.length(); i++)//异常输入

if (str.charAt(i) != 'G' && str.charAt(i) != 'B') return;

int iG = 0, iB = 0;

int countBbefore = 0, countGbefore = 0;

for (int i = 0; i < str.length(); i++)

if (str.charAt(i) == 'G') {

iG++;

countGbefore = countGbefore + iB;//调整后的样式为GGGGBBB

} else if (str.charAt(i) == 'B') {

iB++;

countBbefore = countBbefore + iG;//调整后的样式为BBBBGGGG

}

if (countBbefore <= countGbefore) {

System.out.println(countBbefore);

} else {

System.out.println(countGbefore);

}

}

}

}

java 男女 相邻交换 队形_调整队形+上机编程调整男孩女孩顺序相关推荐

  1. 调整队形+上机编程调整男孩女孩顺序

    上机编程调整男孩女孩顺序 1.题目:在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1).其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示.小朋友们都很顽皮, ...

  2. java中函数是什么_[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...

    本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的函数 看 ...

  3. JAVA给banking作界面_银行运行模拟编程 求助!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public CheckingAccount(double bal, double protect) public CheckingAccount(dou ...

  4. java语句电脑定时关机_月光软件站 - 编程文档 - Java - windows定时关机程序

    应网友yangxjn需要写的一个windows定时关机程序 . /** * Created by IntelliJ IDEA. * autor:cofbean * Date: 2004-3-10 * ...

  5. Java结果集以关闭_显示结果集已关闭,正确顺序是什么

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求大神帮忙看一下下面的很多条sql语句的顺序,不知道是不是顺序的错误 package 读者具体功能实现; import java.awt.BorderLa ...

  6. java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单

    XSL语言功能强大而奇妙.从前面的例子中,我们可以初步了解到,一个xsl文档中使用了很多类似"xsl:xxxxx"这样的标签,这些标签就是xsl语言的部分.一个xsl文档至少是由一 ...

  7. java海滩上有一_五十道编程小题目 --- 41 海滩上有一堆桃子,五只猴子来分 java...

    [程序41] 题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一 个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的 ...

  8. 网易之幼儿园小朋友调整队形

    import java.util.Scanner;/*** 在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1).其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G' ...

  9. JAVA删除pdf空白页_【Spire.PDF教程】添加或删除 PDF 页面,调整页面顺序-word删除空白页...

    Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight. 操作PDF文档时,我们通常会需要添加或删除一些P ...

最新文章

  1. 胡想——对机器人控制体系的一些想法
  2. h5滚动时侧滑出现_H5触摸事件中如何判断用户滑动方向
  3. oracle 父latch:library cache,library cache latch等待事件
  4. 【python】随机采样的两种方法
  5. 人工智能相关领域的国际顶尖会议介绍
  6. QT获取本机IP,本地IP
  7. 磨刀不误砍柴工,使用visual studio之前应该先了解这些...
  8. python ghost.py使用笔记
  9. 使用PdgCntEditor软件对PDF目录进行快速编辑
  10. 配置交叉编译工具链和环境变量
  11. python相关系数显著性检验矩阵_python散点图及相关系数矩阵计算和相关性验证
  12. thinkpad卡在logo界面_win7系统开机卡在Thinkpad LOGO画面无法进入桌面的解决方法
  13. 如何使用UltraCompare对比两个文件夹内容差异
  14. MOS管和IGBT有什么区别?别傻傻分不清了
  15. 苹果cms10自适应模板好看的苹果cmsv10美化模板免费
  16. docker中安装mongo3.2
  17. Android安全检测之加固的坑
  18. 国产服务器tongweb的坑
  19. 微信分享后端接口简单实现
  20. Vue引入CreateJS

热门文章

  1. 基于mysql 批量插入100w测试数据
  2. java毕设项目燕理快递中转站系统设计与实现(附源码)
  3. 6翻了 (15 分)
  4. 投稿经验分享之四:SCI投稿之JEI录用
  5. 使用EDAS投稿系统进行论文投稿时常遇到的问题及解决方法
  6. 元宇宙类电影这里全了!
  7. 维和步兵营~傻逼的戈瑞-冷酷的林皓南~装逼的海蓝
  8. Android自定义键盘
  9. 根据离散傅里叶变换对ECG信号进行频谱分析
  10. PHP微信公众号,获取用户地理位置 定位 经纬度