一个Java面试题(约瑟夫环问题)
来源:互联网 发布:java.nio.charset jar 编辑:程序博客网 时间:2024/06/09 16:36
在一只热气球上有15个日本人和15个美国人,由于热气球超重,必须要跳下去15个人。按照商讨的规则,从第一个人开始数起,第九个人被选做要跳下的人,以此类推。最终热气球上只剩下15个美国人,试编写一段程序,打印出那15个日本人的位置。
import java.io.*;
public class Yuesefu2 {
public static class Ren {
private int weizhi;
Ren next;
public Ren() {
}
public Ren(int i) {
weizhi = i;
}
}
public static void main(String[] args) throws IOException {
Ren a1 = new Ren(1);
Ren list = new Ren();
list = a1;
for (int i = 2; i <= 30; i++) {
Ren a = new Ren(i);
list.next = a;
list = list.next;
}
list.next = a1;
for (int j = 1; j <= 15; j++) {
for (int m = 1; m <= 8; m++) {
list = list.next;
}
System.out.println("第" + list.next.weizhi + "个人是日本人");
list.next = list.next.next;
}
}
}
问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m,从第一个人开
始顺时针方向自1起顺序报数,报到m时停止报数,抱m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新自1起顺序报
数;如此下去,直到所有人全部出列为止。要求用JAVA设计一个程序模拟此过程,并给出出列人的编号序列。
测试数据:
初始报数上限值m = 20
n = 7,七个人的密码依次为3,1,7,2,4,8,4
*/
import javax.swing.*;
public class Yuesefu
{
public static void main(String[] args)
{
JOptionPane input =new JOptionPane();
int n=Integer.parseInt(input.showInputDialog("请输入总人数:"));
Ren a1=new Ren(1,Integer.parseInt(input.showInputDialog("请输入第1个人的密码")));
Ren index=a1;// j 指向人
for(int i=2;i<=n;i++)//初始化每个人
{
index.next=new Ren(i,Integer.parseInt(input.showInputDialog("请输入第"+i+"个人的密码")));
index=index.next;
}
index.next=a1;
int m=Integer.parseInt(input.showInputDialog("请输入初始密码:"));
for(int i=0;i<7;i++)
{
for(int k=0;k<m-1;k++)//轮转
{
index=index.next;
}
System.out.println("第"+index.next.flag+"个人出局");
input.showMessageDialog(null,"第"+index.next.flag+"个人出局");
m=index.next.mima;//可以实现剔除后转换为此人拥有的密码.
index.next=index.next.next;
}
}
public static class Ren//定义人的链表
{
private int flag;//序号
private Ren next;//指针
private int mima;
public Ren(int n,int m)
{
flag=n;
mima=m;
}
}
}
- 一个Java面试题(约瑟夫环问题)
- 一个Java面试题(约瑟夫环问题)
- 《剑指Offer》面试题:约瑟夫环问题
- 【面试题45】约瑟夫环问题
- 华为机试题: 约瑟夫问题(Java)
- 经典面试题-约瑟夫环
- 面试题45:约瑟夫环
- 剑指offer面试题之约瑟夫环问题
- 面试题—Java递归实现约瑟夫环
- 约瑟夫问题(约瑟夫环) java
- 面试题45:圆圈中最后剩下的数字(约瑟夫环问题)
- 面试笔试题约瑟夫问题详解
- 一个Java面试题
- 一个JAVA面试题
- Java数据结构约瑟夫问题和腾讯面试题快慢指针找出中间节点
- 剑指offer面试题45圆圈中最后一个数字,约瑟夫环模拟和数学解法
- 面试题-华为(16年)-约瑟夫环:每隔两个数删掉一个数...-4
- 约瑟夫环问题--java
- GCC中汇编格式
- 无法将程序发布到symbol得mc1000 问题解决办法
- asp创建文件夹
- 函数指针及extern "c"
- sql server 2000/2005 游标的使用操作
- 一个Java面试题(约瑟夫环问题)
- OSI及TCP/IP的概念和区别
- 选中指定行,并取指定行相应列的值!
- 神州数码试题
- 学习java的30个目标
- 如何使窗体不重复被打开
- 配置WebLogic Server集群
- 样式表无法查看XML输入请更正错误然后单击,解决办法
- SharePoint Web Service系列:编写自定义SharePoint Web Services之一