poj3750约瑟夫环,循环队列
来源:互联网 发布:美女直播间源码 编辑:程序博客网 时间:2024/06/05 12:43
Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
Input
第一行输入小孩的人数N(N<=64)
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号”,”间隔
Output
按人名输出小孩按顺序出列的顺序,每行输出一个人名
Sample Input
5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3
Sample Output
Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi
import java.io.BufferedInputStream;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner cin = new Scanner( new BufferedInputStream(System.in) ) ; PrintWriter cout = new PrintWriter(System.out) ; List<String> answer = new Solve(cin.nextInt() , cin).todo() ; for(String name : answer){ cout.println(name) ; } cout.flush() ; cout.close() ; }}class Node{ String name ; Node pre , next ; Node(){ pre = next = null ; }}class Solve{ Node head ; int w , s ; public Solve(int n , Scanner cin) { make(n) ; Node now = head ; for(int i = 1 ; i <= n ; i++){ now.name = cin.next() ; now = now.next ; } String[] p = cin.next().split(",") ; w = Integer.parseInt(p[0]) ; s = Integer.parseInt(p[1]) ; } void make(int n){ head = new Node() ; Node now = head ; for(int i = 1 ; i < n ; i++){ now.next = new Node() ; now.next.pre = now ; now = now.next ; } now.next = head ; head.pre = now ; } Node move(Node now , int step){ for(int i = 1 ; i <= step ; i++) now = now.next ; return now ; } Node delete(Node now){ now.next.pre = now.pre ; now.pre.next = now.next ; return now.next ; } List<String> todo(){ List<String> answer = new ArrayList<String>() ; Node now = move(head , w-1) ; while(now.next != now){ now = move(now, s-1) ; answer.add(now.name) ; now = delete(now) ; } answer.add(now.name) ; return answer ; }}
0 0
- poj3750约瑟夫环,循环队列
- POJ3750 约瑟夫环
- poj3750(模拟+约瑟夫环)
- POJ3750 循环链表解决约瑟夫问题
- 循环队列解决约瑟夫环问题
- 循环队列解决约瑟夫环问题。
- 循环队列 约瑟夫问题
- 利用循环链队列求解约瑟夫环问题(…
- poj3750单向循环链表
- poj3750
- POJ3750
- poj3750
- Luogu-p1996约瑟夫问题(循环队列)
- 队列(约瑟夫环)
- 剑指offer--圆圈中剩下的数字--约瑟夫环/循环队列
- 设头指针的循环单向队列及其约瑟夫环应用
- 简单约瑟夫环【队列实现】
- 约瑟夫环的队列实现
- 17款最佳代码省查工具
- git 出错及解决办法
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
- 解决64位进程调用32位库文件报错问题
- 1059. Prime Factors (25)【素数】——PAT (Advanced Level) Practise
- poj3750约瑟夫环,循环队列
- 一些自己不太常用,但是却很有用的知识点
- MyBatis学习 之 四、动态SQL语句
- 关于SetCapture() 和 ReleaseCapture()的用法
- HDU 2063 过山车
- copy from user函数 和copy to user 函数分析
- 提高数倍工作效率的Android Studio技巧
- MyBatis学习 之 五、MyBatis配置文件
- 学习日记--viewpager简单测试