论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
软件开发
>
java语言
>
用Java实现约瑟夫环
回复
« 返回列表
593249217
总版主
注册日期
2010-11-25
发帖数
385
QQ
593249217
火币
969枚
粉丝
282
关注
1
加关注
写私信
打招呼
阅读:
3267
回复:
0
用Java实现约瑟夫环
楼主
#
更多
只看楼主
倒序阅读
发布于:2011-09-06 06:44
保存
100%
100%
[]
1
什么是约瑟夫环呢?
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列.
我们用程序说话,实现约瑟夫环
import
java
.util.Scanner;
public class Josephus
{
private static class Node
{
public int no;// 编号
public Node next;// 下一个节点
public Node(int no)
{
this.no = no;
}
}
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总人数:");
int totalNum = scanner.nextInt();
System.out.print("请输入报数的大小:");
int cycleNum = scanner.nextInt();
Node header = new Node(1);
Node po
inter
= header;
for (int i = 2; i <= totalNum; i++)
{
pointer.next = new Node(i);
pointer = pointer.next;
}
pointer.next = header;
// 初始化环形链表结束
System.out.println("以下是出列的顺序:");
while (pointer != pointer.next)
{
for (int i = 1; i < cycleNum; i++)
{
pointer = pointer.next;
}
System.out.println(pointer.next.no);
pointer.next = pointer.next.next;
}
System.out.println(pointer.next.no);
}
}
喜欢
0
评分
0
最新喜欢:
多一分钟时间学习,就多一份技术!
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢