问题描述有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。例如,当n=5, k=2时:1号小朋友报数1;2号小朋友报数2淘汰;3号小朋友报数3;4号小朋友报数4淘汰;5号小朋友报数5;1号小朋友报数6淘汰;3号小朋友报数7;5号小朋友报数8淘汰;3号小朋友获胜。给定n和k,请问最后获胜的小朋友编号为多少?
输入格式输入一行,包括两个整数n和k,意义如题目所述。
输出格式输出一行,包含一个整数,表示获胜的小朋友编号。
样例输入
5 2
样例输出
3
样例输入
7 3
样例输出
4
数据规模和约定对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

思路:使用队列实现。

import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;public class Main_Game {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int count = sc.nextInt();// 小朋友个数int num = sc.nextInt();// 需要数的数int currnum = 1;Queue<Integer> queue = new ArrayDeque<Integer>();// 小朋友组成的队列for (int i = 1; i <= count; i++) {queue.add(i);}while (queue.size() > 1) {int top = queue.element();//队首元素queue.remove();//删除队首元素if(currnum % num !=0 && currnum %10 != num){//如果不是num的倍数并且不包含numqueue.add(top);//将元素加入队尾
            }currnum ++;}System.out.println(queue.element());}
}

链表实现:

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class CountGame {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int count = sc.nextInt();// 小朋友个数int num = sc.nextInt();// 需要数的数int currnum = 0;int currid = 0;List<Person> pers = new LinkedList<Person>();for(int i = 0; i < count; i++){Person pes = new Person(i+1);pers.add(pes);}while (pers.size() > 1) {currnum ++;if (currnum % num != 0 && currnum%10!=num) {// 数到不是num的倍数也不包含num的数
                pers.get(currid).setNumber(currnum);}else{pers.remove(currid);if(currid >= pers.size()){currid = 0;}continue;}if(currid < pers.size()-1){currid++;}else{currid = 0;}}System.out.println(pers.get(0).getId());}
}
class Person {private int id;private int number;public Person(){}public Person(int id){this.id = id;}public Person(int id,int number){this.id = id;this.number = number;}public int getId() {return this.id;}public void setId(int id) {this.id = id;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}}

转载于:https://www.cnblogs.com/syq816/p/9915168.html

CCF认证201712-2游戏相关推荐

  1. CCF认证 2017-12 行车路线

    最短路的变形,有两种道路,需要分开计算最短距离,要不然得不到全局最优解 考试得分80,后来看了好久发现,竟然是int爆掉了,导致没有满分(囧) #include<iostream> #in ...

  2. CCF认证历年真题 满分代码(更新至2018年12月)

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

  3. CCF认证历年真题 满分代码

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

  4. CCF认证历年试题解【网上跟帖,请不要使用称呼】

    程序改变现实,软件统治世界. 程序员需要有精益求精的工匠精神,追求逻辑的极简.时间的最少和存储的最省,并且懂得其中的平衡. 数据表示需要优先考虑,对于许多问题,找到表示该问题的数据结构,问题自然就解决 ...

  5. ccf认证俄罗斯方块java_CCF认证历年试题 - osc_h3robkrt的个人空间 - OSCHINA - 中文开源技术交流社区...

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201703-1 分蛋糕(100分) CCF201612-1 中间数(100分) CCF2 ...

  6. CCF认证训练行动路线图

    通过CCF认证的训练题选自三个方面,一是CCF认证试题,二是使用北大百练的练习题等等,三是ACM-ICPC的练习题. CCF认证的试题是必须练习的,通过CCF试题的练习有助于了解试题风格特点.然而CC ...

  7. CCF认证考试历年1、2题AC代码

    CCF认证考试历年1.2题AC代码 1.ISBN号码 #include<iostream> using namespace std;int main() {char ch;int a[3] ...

  8. ccf认证俄罗斯方块java_CCF认证历年试题

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201703-1 分蛋糕(100分) CCF201612-1 中间数(100分) CCF2 ...

  9. CCF认证历年试题集

    来源:CCF计算机职业资格网站. CCF201703试题 CCF201612试题 CCF201609试题 CCF201604试题 CCF201512试题 CCF201509试题 CCF201503试题 ...

  10. CCF NOI100002 取数游戏

    问题链接:CCF NOI100002 取数游戏. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是相 ...

最新文章

  1. 第一章初始mybatis框架
  2. 8K分辨率7680*4320
  3. Leetcode1025.除数博弈
  4. 频域、时域的理解_通俗易懂_电子信息学习_信号系统信息处理
  5. java人民币大写转换脚本_Java实现人民币大写代码解析
  6. 前端|Ant Design介绍
  7. 时间序列预测中使用类EMD方法时的信息泄露和计算量问题
  8. 家庭宽带之IPv6网络测试
  9. 企业邮箱是什么?企业邮箱如何免费申请?外贸公司邮箱申请
  10. 登录界面---油管大佬
  11. ssh登录极路由后台_各品牌路由器登录网址大全 路由器默认用户名/密码
  12. Go 反射机制详解及实例 【Go语言圣经笔记】
  13. 深圳云计算培训:云计算是怎么分类的
  14. iOS 切换到后台任务执行
  15. 设置html的table高度100%
  16. SQL SERVER 对等发布
  17. 「马克笔上色教程」超级详细的步骤和一些细节问题讲解
  18. 离散数学 02.01 命题以及逻辑联结词
  19. 囚徒困境 matlab,matlab 囚徒困境(prisoner's dilemma)是指两个被捕 联合开发网 - pudn.com...
  20. Sprig Boot入门

热门文章

  1. poj 2409 Let it Bead Polya计数
  2. URL中文传值乱码解决方式
  3. SQL SERVER 2005 使用订阅发布同步数据库
  4. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
  5. 定时器name冲突会报错吗_部落冲突:冬季版本即将更新,多个超级兵种被曝光,会上线吗?...
  6. 2019-11-26 https://raw.githubusercontent.com和谐/gfwlist/gfwlist/master/gfwlist.txt
  7. service mysql k8s_Kubernetes(k8s)中文文档 名词解释 Services_Kubernetes中文社区
  8. AMFPHP基本安全问题
  9. python 柱状图上显示字体_Python爬取百部电影数据,我发现了这个惊人真相!
  10. Java-旋转字符串