题目1189:还是约瑟夫环
2014-03-03 21:13
302 查看
题目描述:
生成一个长度为21的数组,依次存入1到21;
建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每个结点中;
将上述链表变为单向封闭(循环)链表;从头结点开始数,将第17个结点删除,将它的下一个结点作为新的头结点;
重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字。
输入:
没有任何输入数据。
输出:
输出上面题目描述中最后剩下的节点中存入的数字。
样例输入:
样例输出:
提示:
请不要直接输出数据水过去,这样达不到提升自己的目的,
请按照题目要求来做题,这样到真正考试时才能应对自如。
生成一个长度为21的数组,依次存入1到21;
建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每个结点中;
将上述链表变为单向封闭(循环)链表;从头结点开始数,将第17个结点删除,将它的下一个结点作为新的头结点;
重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字。
输入:
没有任何输入数据。
输出:
输出上面题目描述中最后剩下的节点中存入的数字。
样例输入:
样例输出:
提示:
请不要直接输出数据水过去,这样达不到提升自己的目的,
请按照题目要求来做题,这样到真正考试时才能应对自如。
import java.io.IOException; import java.io.FileReader; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.Queue; import java.util.LinkedList; class Main { public static final boolean DEBUG = false; public static void main(String[] args) throws IOException { Scanner cin; int n, p; if (DEBUG) { cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt")); } else { cin = new Scanner(new InputStreamReader(System.in)); } n = 21; p = 17; Queue<Integer> q = new LinkedList<Integer>(); for (int i = 1; i <= n; i++) q.add(i); int i = 0; while (!q.isEmpty()) { if (q.size() == 1) { System.out.println(q.peek()); break; } int tmp = q.poll(); i++; if (i == p) { i = 0; } else q.add(tmp); } } }
相关文章推荐
- Linux bash简介
- DownloadManager
- 2014/3/2 zoj 3月份月赛/长沙多校第一次
- maven构建的项目运行tomcat时报:CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- C++中的long long和__int64类型
- pat advanced 1073
- 2012年蓝桥杯预选赛-微生物增殖(我有疑问)
- ZOJ 3765 Lights (伸展树)
- ecnu 1244 积木游戏(黑书)DP
- Android之AsyncTask面试
- javascript中的Dom对象
- hdu 3336 KMP+DP (仍不懂)
- MVC之间如何通信
- Servlet 出现404 not found 的问题
- servlet应用
- 0-99累加
- ACM-简单题之进制转换——hdu2031
- UVA Power of Cryptography
- linux get eth? ipaddress
- 【静态链接】第2章---------------------静态链接过程(符号解析与重定位)