问题描述

学校给高一(三)班分配了一个名额,去参加奥运会的开幕式。每个人都争着要去,可是名额只有一个,怎么办?班长想出了一个办法,让班上的所有同学(共有n个同学)围成一圈,按照顺时针方向进行编号。然后随便选定一个数m,并且从1号同学开始按照顺时针方向依次报数,1, 2, …, m,凡报到m的同学,都要主动退出圈子。然后不停地按顺时针方向逐一让报出m者出圈,最后剩下的那个人就是去参加开幕式的人。
  要求:用环形链表的方法来求解。所谓环形链表,即对于链表尾结点,其next指针又指向了链表的首结点。基本思路是先创建一个环形链表,模拟众同学围成一圈的情形。然后进入循环淘汰环节,模拟从1到m报数,每次让一位同学(结点)退出圈子。
  输入格式:输入只有一行,包括两个整数n和m,其中n和 m的含义如上所述。
  输出格式:输出只有一个整数,即参加开幕式的那个人的编号。

样例输入

8 3

样例输出

7

思路

初看此题,和约瑟夫环问题相同,即同学围成一圈,叫到指定数的人退出,直到只剩一人
用环形链表解决,代码如下

代码

import java.util.Scanner;public class Select {private static class Node {  //结点结构int num;Node next;public Node(int num) {this.num = num;}}public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();int m = input.nextInt();System.out.println(solution(n, m));}private static Node createList(int n) {Node head = new Node(1);Node rear = head; // 尾指针for (int i = 2; i <= n; i++) {Node node = new Node(i);rear.next = node;rear = node;}rear.next = head; //最后一个结点指向第一个结点return head;}private static int solution(int n, int m) {if(m == 1 || n == 1)return n;int count = 1;Node head = createList(n);Node pre = head;  //指向要删除结点的前驱节点Node p = pre; //指向当前结点while (head.next != head) {if (count != m) {count += 1;pre = p;p = p.next;} else {  //叫到m时删除此结点if (pre.next == head) {  //要删除的是头结点要在删除之后赋一个新的pre.next = p.next;p = pre.next;count = 1;head = p;}else {pre.next = p.next;p = pre.next;count = 1;}}}return head.next.num;}}

算法训练 奥运会开幕式 Java相关推荐

  1. Java实现 蓝桥杯 算法提高 奥运会开幕式

    试题 算法提高 奥运会开幕式 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办?班长 ...

  2. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  3. 蓝桥杯算法训练 礼物(java,个人想法,递归找临界点)

    蓝桥杯算法训练 礼物(java,个人想法,递归找临界点) 问题描述 JiaoShou在爱琳大陆的旅行完毕,即将回家,为了纪念这次旅行,他决定带回一些礼物给好朋友. 在走出了怪物森林以后,JiaoSho ...

  4. 蓝桥杯 ADV-296 算法提高 奥运会开幕式

    算法提高 奥运会开幕式 时间限制:1.0s   内存限制:256.0MB 问题描述 学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办?班长想出了一个办 ...

  5. 算法训练 字符串编辑 java

    算法训练 字符串编辑 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个字符串(长度<=40个字符),并以字符 '.' 结束.编辑功能有: 1 D:删除一个字符,命令的方式为 ...

  6. 【蓝桥杯】算法提高 奥运会开幕式

    我是一个勤劳的搬运工!! 问题描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办 ...

  7. 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版

    问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  8. 蓝桥杯 算法训练 自行车停放(Java)

    问题描述: 有n辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行车的左边或右边.(e.g.停车棚里已经有3辆自行车,从左到右编号为:3,5,1.现在编号为2 ...

  9. 蓝桥杯 ALGO30 算法训练 入学考试 java版

    问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...

最新文章

  1. 树上问题 ---- Codeforces Round #722 (Div. 1) C. Trees of Tranquillity [dfs序区间的性质+最大不相交区间的性质]
  2. js 操作vuex数据_Vuex 数据状态持久化如何处理?
  3. •Grid报表和Free From报表产品之比较
  4. 创建交叉表_【零售】Tableau LOD+表计算做交叉购买分析
  5. 03SpringMVC,Spring,Hibernate整合(Date时间转换)
  6. 极简 响应式 html5,HTML5----响应式(自适应)网页设计
  7. python爬虫语言都能干什么_python除了爬虫还可以做什么
  8. 存储IO加强型实例I1+D1 ——为极致存储性能要求场景而生
  9. 苏槐: 数据治理的本质及实践
  10. 【一千个论文合集】计算机科学的26个细分领域近年必读论文集合
  11. 微信公众平台的账号、微信商户平台的账号、以及小程序的账号都是不同的
  12. Backlog Order
  13. 八 Spring Security Oauth2 单点登录 第三方授权(QQ、微信登录)
  14. @zxing/library实现平板手机扫码功能(二维码+条形码)
  15. WidsMob Montage for Mac v1.19蒙太奇图片制作
  16. 新出炉的 100+ 篇技术热文,在微信热传,别错过哦
  17. Android音视频开发详解
  18. JAVA中的“人妖”
  19. 根轨迹和系统参数的确定
  20. linux 启动rsyslog服务_linux服务之rsyslog

热门文章

  1. 汽车电子技术 PPT
  2. 【MySQL】(四)DBMS
  3. 好友联盟GHOST XP SP2装机版
  4. 羊了个羊微信小程序开发丨源码交付
  5. 泰迪杯数据挖掘第十届B题,时间序列预测
  6. selenium之DDT:使用DDT模块实现数据驱动测试
  7. 转换英文货币大小写的代码
  8. 字节跳动暑期实习生一面面经 大三
  9. ubuntu 中文 极点五笔 qt
  10. 百度AI加速器第七期火热招募