问题:有偶数支羽毛球队进行单循环比赛,按照指定算法将每轮的对阵形势打印出来?

解题思路:单循环制是指每支队伍在比赛是均能相遇一次。可采用'U'逆时针旋转法进行对局轮换。

图1.1为有4支队伍的单循环比赛制的流程图

图1.1 单循环赛制步骤图

可将该过程看成数组的循环。

代码实现:

方法1:

public class SingleCycle {private static Scanner scanner;public static void main(String[] args) {System.out.println("输入偶数个羽毛球队伍:");scanner = new Scanner(System.in);int n = 0;n = scanner.nextInt();if (n%2 !=0 || n <= 0) {System.out.println("输入错误,程序退出!");System.exit(0);}int[] a = new int[n];/*使用双重循环实现球队单循环制轮换* i:局数循环; j:每局的球队赋值*/for (int i = 0; i < n ; i++) {for (int j = 0; j < n; j++) {a[(j + i) % n] = j + 1;}System.out.println("第" + (i+1) + "局的对阵:");showArray(a);}}private static void showArray(int[] a) {for (int m = 0; m < a.length; m++)for (int n = a.length - 1; n > m; n--) {if (m + n + 1 == a.length) {System.out.print(a[m] + "-" + a[n] + " ");}}System.out.println();}
}

方法2:

public class SingleCycle {static int teamNum;static int[] teams;private static Scanner scanner;public static void main(String[] args) {//通过命令行参数获取球队数量scanner = new Scanner(System.in);teamNum= scanner.nextInt();if(teamNum<=0 || teamNum%2!=0){System.out.println("输入错误,程序退出!");System.exit(0);}//创建球队和初始化球队teams=new int[teamNum];for(int i=0;i<teams.length;i++){teams[i]=i+1;}//打印对阵形式和轮循for(int i=1;i<=teamNum;i++){System.out.println("第" + i + "局的对阵:");printTeams();round();}}//打印对阵形式public static void printTeams(){for(int j=0;j<teams.length/2;j++){System.out.print(teams[j]+"-"+teams[teams.length-1-j]+"  ");}System.out.println();}//球队单循环轮训public static void round(){int temp=teams[teams.length-1];for(int i=teams.length-1;i>=1;i--){teams[i]=teams[i-1];}teams[0]=temp;}
}

转载于:https://blog.51cto.com/haoroid/1854275

单循环比赛规则-java相关推荐

  1. java单循环 比较得分_java – 为什么两个单独的循环比一个快?

    我想了解Java对连续循环做了什么样的优化.更确切地说,我正在尝试检查是否执行了循环融合. 从理论上讲,我期望这种优化不会自动完成,并且期望确认融合版本比具有两个循环的版本更快. 但是,在运行基准测试 ...

  2. 【Java】单循环链表解决约瑟夫环问题

    问题描述 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自 ...

  3. java 约瑟夫单循环_约瑟夫问题(Josephus问题)的递推O(n)解法、循环解法、单循环链表解法 | 学步园...

    (一) O(n)时间的解法 只能解出最后一个出局的人,也就是最后留下的人--默认是从编号为1的人开始数起 n个人在一个圆桌上吃饭,每m个人杀掉一个,直到最后剩下一个人. 问最后剩下哪个人? 将人分别标 ...

  4. Java中几种常见的循环

    多重if_else: package com.dengchaoqun.ht;public class Double_For02 {/*** * 打印乘法表*/public static void ma ...

  5. python乒乓球比赛规则介绍_乒乓球比赛规则及活动方案

    <乒乓球比赛规则及活动方案.doc>由会员分享,可免费在线阅读全文,更多与<乒乓球比赛规则及活动方案>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. ...

  6. java comparable排序_Java使用Comparable解决排序问题

    本文实例讲述了Java使用Comparable解决排序问题的方法.分享给大家供大家参考.具体实现方法如下: 一次举重竞赛的比赛规则是:选手的成绩以成功举起的总重量来排序,举起总重量多的排在前面:当举起 ...

  7. 多个输出用java怎么写_请问用java写程序怎么输出这两个图形

    IDE: Eclipse IDE for Java Developers Version: Mars.2 Release (4.5.2) 完整代码如下,把函数写进main()即可使用,行数可为任意单数 ...

  8. java解码_Java数组已排序解码

    java解码 排序是我们在计算机科学中学习的第一个算法. 排序是一个非常有趣的领域,它有大约20多种算法,而且总是很难确定哪种算法最好. 排序算法的效率是根据占用的时间和所需的空间来衡量的. 一些时间 ...

  9. Java数组排序解码

    排序是我们在计算机科学中学习的第一个算法. 排序是一个非常有趣的领域,它有大约20多种算法,而且总是很难确定哪种算法最好. 排序算法的效率是根据所需的时间和所需的空间来衡量的. 一些时间气泡排序是最好 ...

  10. java 双向链表_23张图!万字详解「链表」,从小白到大佬

    链表和数组是数据类型中两个重要又常用地基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决 ...

最新文章

  1. Nginx入门笔记之————配置文件结构
  2. Git 使用规范流程
  3. 将Calendar对象转换为日期时间字符串
  4. 常搓八个部位可以防衰老 - 健康程序员,至尚生活!
  5. C++指向成员函数的指针
  6. Hakase and Nano(博弈)
  7. Currency Exchange——最短路Bellman-Ford算法
  8. oracle磁带库清洁带标签,磁带库、磁带机和介质支持
  9. Visual Studio中的第一个Django-Python应用程序
  10. Docker学习总结(65)—— 容器引擎 Docker 与 Podman 的详细对比分析
  11. 随机森林算法入门(python)
  12. ResNet网络结构详解及代码复现
  13. Python 元组大全
  14. 程序员的而立之年,迷茫之年
  15. java实现手机扫描二维码下载功能
  16. Java常用类之String类知识清单,简单易理解
  17. python二级证书含金量排名_计算机二级证书含金量有多高?你真的知道吗?
  18. Python解析GPGGA报文_统计数据完整率
  19. 量产pny的USB3.0-金棒U盘
  20. Mysql数据库技术——MEB备份技术

热门文章

  1. 一款基于易语言的搜题软件
  2. HTTP代理原理探索
  3. uml在线画图共享网站
  4. 01 GOF设计模式的定义和分类
  5. NSGA2 算法MATLAB完整代码 中文注释详解
  6. 51单片机跑马灯程序
  7. stm32c8t6之跑马灯程序配置
  8. 单片机开发板抗干扰(转载于51hei单片机)
  9. 客户管理软件系统源码
  10. 如何做项目总结与汇报