交替放置的玻璃杯

  • 题目
  • 一、思路
  • 二、代码
    • 测试数据

题目

交替放置的玻璃环有2n个玻璃杯挨个排成一行,前n个装满苏打水,其余n个杯子为空。交换杯子的位置,使之按照满一空一满一空的模式排列,而且杯子动的次数要最少。


一、思路

二、代码

代码如下:

public class text6 {public static int [] initArr(int n){/*初始化数组,装满水为1,空为0*/int arr[]=new int[2*n];for(int i=0,j=n;i<n&&j<2*n;i++,j++){arr[i]=1;arr[j]=0;}return arr;}public static void main(String [] args){int n=new Scanner(System.in).nextInt();int arr[]=initArr(n);for (int i :arr) {System.out.print(i+" ");}System.out.println();System.out.println("交换了"+arrChange1(arr,n)+"次");//System.out.println("交换了"+arrChange2(arr,n)+"次");for (int i=0;i<2*n;i++){System.out.print(arr[i]+" ");}}public static int arrChange1(int arr[],int n){/*从左到右遍历*/int count=0;int q=n%2;for(int i=1,j=n+q;i<n&&j<2*n;i+=2,j+=2){int item=arr[i];arr[i]=arr[j];arr[j]=item;count++;}return count;}public static int arrChange2(int arr[],int n){/*从两边到中间*/int item=2,count=0;while(item<2*n-item){int temp=arr[item-1];arr[item-1]=arr[2*n-item];arr[2*n-item]=temp;count++;item+=2;}return count;}}

测试数据

4
1 1 1 1 0 0 0 0
交换了2次
1 0 1 0 1 0 1 0 6
1 1 1 1 1 1 0 0 0 0 0 0
交换了3次
1 0 1 0 1 0 1 0 1 0 1 0

交换次数都是n/2

【交替放置的玻璃杯】有2n个玻璃杯挨个排成一行,前n个装满苏打水,其余n个杯子为空。交换杯子的位置,使之按照 满-空-满-空的模式排列相关推荐

  1. java list 去空字符串_【JAVA基础】list和字符串判空

    前言: 我们在项目中经常需要对获取的list集合或String类型变量判空,看前辈的代码,不同的人判空的方法不一样,那么,Java代码中,对list集合和String类型变量到底该如何判空呢? 一.J ...

  2. 空之轨迹手游服务器维护,空之轨迹7月9日临时维护公告_空之轨迹7月9日更新了什么_玩游戏网...

    <空之轨迹>6月1日更新公告 在空之轨迹手游中6月1日究竟更新了什么呢?在空之轨迹手游中布莱特一家卡池将会正式开启哦!想了解的小伙伴们,下面就让我们一起来看一下吧!亲爱的各位游击士:< ...

  3. C++ 实验二 NO.4 字符串合并:输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。

    //******************************************************************************************** //*程序 ...

  4. 异步FIFO的verilog代码实现(包含将满和将空逻辑)

    目录 异步FIFO的verilog代码实现(包含将满和将空逻辑) 异步FIFO简介 异步FIFO关键技术1 -- 读写信号跨时钟域同步 异步FIFO关键技术2 -- 读写地址的比较 异步FIFO关键技 ...

  5. java 判断对象是否为空的工具类_如何判断java对象是否为空

    首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的:另一种是org.springframework.util包下的.这两种StringUt ...

  6. 队列及循环队列为什么用空一个元素的位置

    队列,循环队列为什么用空一个元素的位置  本篇笔记是我在B站上跟着尚硅谷教程进行学习,记录的学习笔记,在学习中产生了疑问,并通过查找资料解决了相关问题. 队列介绍 1)队列是一个有序列表,可以用数组或 ...

  7. 判断ajax获取是否为空,使用paginate方法分页无法判断获取的数据是否为空

    问题:使用paginate方法分页无法判断获取的数据是否为空,在模板里面无法判断数据是否为空,比如在商品列表当中,当没有商品时无法判断生成的对象为空,所有就什么都不显示了. 解决办法: $newsDa ...

  8. csgo躲猫猫模式显示服务器已满,CSGO有躲猫猫模式吗 CSGO躲猫猫模式进入方法一览...

    CSGO有躲猫猫模式吗 CSGO躲猫猫模式进入方法一览 从CS1.6开始,到CS:S,然后是最近的<反恐精英:全球攻势>(CSGO),虽然一直是电子竞技游戏,但有许多高手也为这款游戏创建了 ...

  9. php验证用户名密码是否为空,【后端开发】php验证用户名密码是否为空

    php验证用户名密码是否为空 很多时候,我们前端js对用户名密码进行了非空验证,后端还需要再次验证一下,这样能保证数据的安全,代码逻辑的健壮性. php验证用户名密码为空的方法,代码如下: if (! ...

最新文章

  1. 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...
  2. 225.用队列实现栈
  3. PHP多台服务实现单点登录,如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)...
  4. leetcode算法题--LRU缓存机制
  5. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
  6. eclipse如何设置js源文件编码
  7. 【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法
  8. antlr4做一个计算器
  9. 4-1-getOutputStream()或getWriter()发送响应消息体及分析为什么不能同时使用
  10. [Ext JS6] ViewControllers-视图控制器
  11. 在ASP.NET MVC中使用Knockout实践07,自定义验证信息的位置与内容
  12. HTTPS科普扫盲帖【转】
  13. 图论算法——有向图的可达性与寻路
  14. 【VMCloud云平台进阶篇】应用层面优化
  15. dateutil 日期计算_时间工具——DateUtil
  16. 超详版Struts2入门安装教程
  17. word 批量替换空格和回车
  18. LOJ #3049. 「十二省联考 2019」字符串问题
  19. java数独算法_数独求解算法(回溯法和唯一解法)java实现
  20. c语言直线插补原理程序,直线插补算法

热门文章

  1. android播放蓝光播放器,安卓播放器真的拥有完美的蓝光原盘菜单导航吗?我来测试下...
  2. 「软技能|真・复盘」复盘不是总结也不是批斗,当我们聊复盘的时候我们在干什么
  3. 《软件项目风险的主要来源以及如何规范》
  4. 数据分析作业(一)利用Python分析学生成绩
  5. Unity编辑器拓展(Gizmos)
  6. linux运行彩虹猫,在 Linux 命令行中观看彩虹猫来稍事休息
  7. 一款国内开发的原型设计软件,非常棒!
  8. ansys建钢管混凝土模型
  9. Android支付SDK开发在App中调起H5支付的实现
  10. Java代码农夫与牛,农夫和牛的故事!(销售必看)