`
jeffleee
  • 浏览: 7595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类

也谈约瑟夫环,请指正

阅读更多
import java.util.ArrayList;
import java.util.List;

public class Josephus {
	//约瑟夫环的算法
	public static void main(String[] args) {
		int result;
		int temp;
		List list=new ArrayList();
		//初始的N
		if(args[0]==null) args[0]="0";
		//初始的上限值M
		if(args[1]==null) args[1]="0";
		int n=Integer.parseInt(args[0]);
		int m=Integer.parseInt(args[1]);
		//将N个数计入队列
		for(int i=1;i<=n;i++){
			Integer ii=new Integer(i);
			list.add(ii);
		}
		while(list.size()>1){
			int size=list.size();
			temp=m;
			//不到一轮,出数
			if(size>=temp){
				result=temp;
				m=Integer.parseInt(list.get(result-1).toString());
				System.out.println(list.get(result-1));
				list.remove(result-1);
				size--;	
			}else{//多于一轮,出数
				result=m%size;
				if(result==0) result=size;
				m=Integer.parseInt(list.get(result-1).toString());
				System.out.println(list.get(result-1));
				list.remove(result-1);
				size--;
			}
			//出数后组成新的队列覆盖前队列
			List templist=new ArrayList();
			for(int jj=result-1;jj<list.size();jj++){
				templist.add(list.get(jj));
			}
			for(int ii=0;ii<result-1;ii++){
				templist.add(list.get(ii));
			}
			list=templist;
			//System.out.println(list);
		}
		System.out.println("The last one is:--"+list.get(0));
	}
}


个人认为效率极差,因为要重新生成环的list,先想出个结果吧,然后再优化下!
分享到:
评论

相关推荐

    约瑟夫环 代码 约瑟夫环 代码

    约瑟夫环代码约瑟夫环代码约瑟夫环代码约瑟夫环代码约瑟夫环代码约瑟夫环代码

    约瑟夫环实验报告

    在VC6.0中实现约瑟夫环问题,需要熟悉其编译器语法和调试工具,同时也需了解基本的数据结构和算法原理。 #### 实验报告撰写 撰写关于约瑟夫环的实验报告,应包含以下几个关键部分: - **引言**:简述约瑟夫环问题...

    单链表实现约瑟夫环

    单链表解决约瑟夫环问题

    基于mfc的约瑟夫环模拟器

    【约瑟夫环模拟器基于MFC的实现】 约瑟夫环问题,源自古罗马的一则历史传说,是一个经典的计算机科学问题,它涉及到循环链表和递归算法。在这个问题中,人们围成一个圈,从某个人开始按顺序报数,每次数到特定数字...

    约瑟夫环的mfc实例

    约瑟夫环问题,也称为约瑟夫环序列或约瑟夫问题,是一个著名的理论问题,源自古希腊的数学家约瑟夫·弗拉基米尔。这个问题的基本设定是:一个圆圈中的n个人按顺序编号,从第一个人开始报数,数到m的人将被剔除,然后...

    数据结构约瑟夫环实习报告

    约瑟夫环(Josephus Problem)是一个经典的理论问题,它在数据结构和算法的教学中常被用作实例,来展示链表、队列、栈等数据结构的应用。这个实习报告将深入探讨这个问题,并通过源代码进行实际实现。 约瑟夫环问题...

    约瑟夫环的例子,约瑟夫环的例子

    在软件开发中,约瑟夫环问题也可以启发我们设计出优雅的并发控制策略,尤其是在处理循环依赖和资源竞争的情况下。 总之,约瑟夫环问题是一个富有启发性的数学模型,它展示了数学和计算机科学的紧密联系,通过理解和...

    约瑟夫环问题算法

    约瑟夫环问题,也被称为约瑟夫环序列或约瑟夫问题,是一个著名的理论问题,源自古罗马的传说。该问题的基本设定是:一群囚犯围成一个圈,按照顺时针方向从某个人开始计数,每数到特定数值的人会被剔除出圈,然后从下...

    用C语言实现约瑟夫环,适合初学者学习

    用C语言实现约瑟夫环,适合初学者学习 用C语言实现约瑟夫环,适合初学者学习 用C语言实现约瑟夫环,适合初学者学习 用C语言实现约瑟夫环,适合初学者学习 用C语言实现约瑟夫环,适合初学者学习 用C语言实现约瑟夫环...

    约瑟夫环代码及实验!!

    约瑟夫环问题是一个经典的计算机科学问题,源自一个古老的故事。在这个问题中,人们围成一个圈,并按顺序编号。每次从某个特定编号的人开始,每隔一定数量的人就会被排除,直到只剩下最后一个人为止。这个问题通常...

    约瑟夫环设计实现

    约瑟夫环设计实现 约瑟夫环是一种经典的数据结构问题,通过 Java 语言来实现约瑟夫环,可以让我们更好地理解算法和数据结构的思想。下面,我们将对约瑟夫环的设计实现进行详细的介绍。 课程设计介绍 约瑟夫环是一...

    约瑟夫环动态演示

    约瑟夫环,又称为约瑟夫问题(Josephus Problem),是计算机科学中一个著名的理论问题,源于公元前一世纪犹太历史学家弗拉维乌斯·约瑟夫斯的叙述。该问题通常用来探讨分布式系统中的生存策略或者数据结构与算法的...

    用顺序表实现约瑟夫环

    用顺序表表示约瑟夫环,其中密码相同,即为静态存储约瑟夫环的内容

    用循环链表实现约瑟夫环问题

    使用c语言中的循环链表及结构体实现约瑟夫环问题

    汇编语言编写的约瑟夫环问题(猴子选美)

    汇编语言编写的猴子选美,及约瑟夫环,有一定注释~

    约瑟夫环的C++代码

    约瑟夫环的C++代码,采用链表的数据结构,对写出了链表的模板类

    约瑟夫环数据结构

    约瑟夫环问题不仅是一个有趣且具有挑战性的数学问题,同时也是一个很好的数据结构实践案例。通过使用循环链表来实现约瑟夫环,不仅可以有效地解决该问题,还能加深对循环链表这种数据结构的理解。在计算机科学的学习...

    约瑟夫环代码 c语言约瑟夫

    ### 约瑟夫环问题及其C语言实现 #### 一、约瑟夫环问题概述 约瑟夫环(Josephus Problem)是一个经典的数学问题,它涉及到一系列人在一个圈中根据特定规则依次“出列”的过程。具体描述如下: 1. **初始条件**:...

    用C语言编写的约瑟夫环程序

    【约瑟夫环问题概述】 约瑟夫环问题是一个经典的理论问题,源于古代犹太人的一个传说。在问题中,n个人按照顺时针方向围坐成一圈,每个人都有一个唯一的编号,从1到n。游戏开始时设定一个报数上限m,从第1个人开始...

    约瑟夫环MFC窗体版

    《约瑟夫环MFC窗体版:深入理解与实现》 约瑟夫环问题,又称约瑟夫环算法(Josephus Problem),是计算机科学中一个经典的理论问题,源自一个古老的传说。这个问题在不同的编程环境中都有所应用,尤其是在数据结构...

Global site tag (gtag.js) - Google Analytics