棋子换位

  1. 棋子换位
  2. n个棋子An个棋子B,在棋盘上排成一行。
  3. 它们中间隔着一个空位,用“.”表示,比如:
  4. AAA.BBB
  5. 现在需要所有的A棋子和B棋子交换位置。
  6. 移动棋子的规则是:
  7. 1. A棋子只能往右边移动,B棋子只能往左边移动。
  8. 2. 每个棋子可以移动到相邻的空位。
  9. 3. 每个棋子可以跳过相异的一个棋子落入空位(A跳过B或者B跳过A)。
  10. AAA.BBB 可以走法:
  11. 移动A ==> AA.ABBB
  12. 移动B ==> AAAB.BB
  13. 跳走的例子:
  14. AA.ABBB ==> AABA.BB
  15. 以下的程序完成了AB换位的功能,请仔细阅读分析源码,填写划线部分缺失的内容。
  16. public class Main
  17. {
  18. static void move(char[] data, int from, int to)
  19. {
  20. data[to] = data[from];
  21. data[from] = '.';
  22. }
  23. static boolean valid(char[] data, int k)
  24. {
  25. if(k<0 || k>=data.length) return false;
  26. return true;
  27. }
  28. static void f(char[] data)
  29. {
  30. while(true){
  31. boolean tag = false;
  32. for(int i=0; i<data.length; i++){
  33. int dd = 0; // 移动方向
  34. if(data[i]=='.') continue;
  35. if(data[i]=='A') dd = 1;
  36. if(data[i]=='B') dd = -1;
  37. if(valid(data, i+dd) && valid(data,i+dd+dd)
  38. && data[i+dd]!=data[i] && data[i+dd+dd]=='.'){
  39. // 如果能跳...
  40. move(data, i, i+dd+dd);
  41. System.out.println(new String(data));
  42. tag = true;
  43. break;
  44. }
  45. }
  46. if(tag) continue;
  47. for(int i=0; i<data.length; i++){
  48. int dd = 0; // `移动方向
  49. if(data[i]=='.') continue;
  50. if(data[i]=='A') dd = 1;
  51. if(data[i]=='B') dd = -1;
  52. if(valid(data, i+dd) && data[i+dd]=='.'){
  53. // 如果能移动...
  54. if( _____________________ ) continue; //填空位置
  55. move(data, i, i+dd);
  56. System.out.println(new String(data));
  57. tag = true;
  58. break;
  59. }
  60. }
  61. if(tag==false) break;
  62. }
  63. }
  64. public static void main(String[] args)
  65. {
  66. char[] data = "AAA.BBB".toCharArray();
  67. f(data);
  68. }
  69. }
  70. 注意:只提交划线部分缺少的代码,不要复制已有代码或填写任何多余内容。
  71. 答案:valid(data,i+dd+dd) && valid(data, i-dd) && data[i-dd] == data[i+dd+dd]

java实现第七届蓝桥杯棋子换位的更多相关文章

  1. java实现第七届蓝桥杯冰雹数

    题目8.冰雹数 题目描述 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升 ...

  2. java实现第七届蓝桥杯七星填数

    七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...

  3. java算法 第七届 蓝桥杯B组(题+答案) 10.压缩变换

    10.压缩变换  (程序设计) 小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...

  4. java算法 第七届 蓝桥杯B组(题+答案) 9.取球博弈

    9.取球博弈  (程序设计) 两个人玩取球的游戏.一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目.如果无法继续取球,则游戏结束.此时,持有奇数个球的一方获胜.如果两人都是 ...

  5. Java实现第七届蓝桥杯国赛 赢球票

    标题:赢球票 某机构举办球票大奖赛.获奖选手有机会赢得若干张球票. 主持人拿出 N 张卡片(上面写着 1~N 的数字),打乱顺序,排成一个圆圈. 你可以从任意一张卡片开始顺时针数数: 1,2,3- 如 ...

  6. java实现第七届蓝桥杯四平方和

    四平方和 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^ ...

  7. java实现第七届蓝桥杯有奖竞猜

    有奖竞猜 题目描述 小明很喜欢猜谜语. 最近,他被邀请参加了X星球的猜谜活动. 每位选手开始的时候都被发给777个电子币. 规则是:猜对了,手里的电子币数目翻倍, 猜错了,扣除555个电子币, 扣完为 ...

  8. java实现第七届蓝桥杯机器人塔

    机器人塔 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是: A ...

  9. java实现第七届蓝桥杯凑平方数

    凑平方数 把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的. 比如:0, 36, 5948721 再比如: 1098524736 1, 25, 6390784 0, 4, 28 ...

随机推荐

  1. C++内存管理学习笔记(3)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  2. Mysql 常用函数(20)- ceiling 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html ceiling 的作用 向上取整,ceil 函数一 ...

  3. JS防抖和节流:原来如此简单

    一.函数防抖 前端开发工作中,我们经常在一个事件发生后执行某个操作,比如鼠标移动时打印一些东西: window.addEventListener("mousemove", ()=& ...

  4. SpringData表关系:多对多

    一.编写实体类配置关联关系: 1.多对多使用注解@ManyToMany配置:a. 在实体中添加一个集合属性 b.在属性上添加ManyToMany注解 c.@JoinTable 注解配置关联关系(nam ...

  5. 轻松扩展机器学习能力:如何在Rancher上安装Kubeflow

    随着机器学习领域不断发展,对于处理机器学习的团队来说,在1台机器上训练1个模型已经有些难以为继,并且现在业界的共识是机器学习已经不仅仅是简单的模型训练. 在模型训练之前.过程中和之后,需要进行许多活动 ...

  6. 苏浪浪 201771010120《面向对象程序设计(java)》第八周学习总结

    1.实验目的与要求 (1) 掌握接口定义方法: (2) 掌握实现接口类的定义要求: (3) 掌握实现了接口类的使用要求: (4) 掌握程序回调设计模式: (5) 掌握Comparator接口用法: ( ...

  7. Hyperledger Fabric开发(一):环境配置

    macOS系统下配置hyperledger fabric环境 cURL mac中自带curl,如果需要下载最新版本,则可按照以下命令,并将路径添加在系统环境变量的最前面即可 brew install ...

  8. C# 使用RestClient 调用接口

    最近做项目使用RestClient 向第三方接口推送数据.不废话直接贴代码 /// <summary> /// 获取Token /// </summary> /// <r ...

  9. 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...

  10. 八皇后问题求解java(回溯算法)

    八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...