`
hedahai119
  • 浏览: 106356 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

约瑟夫问题的通用解决方案-猴子选大王

阅读更多

约瑟夫问题的通用解决方案,用了队列(jdk里面的)

 

题目描述:n只猴子要选大王,选举方法如下:所有猴子按 1,2 ……… n 编号并按照顺序围成一圈,从第 k 个猴子起,由1开始报数,报到m时,该猴子就跳出圈外,下一只猴子再次由1开始报数,如此循环,直到圈内剩下一只猴子时,这只猴子就是大王。

import sun.misc.Queue;


/** 
 * @author: Dahai He
 * @time: 2010-7-14 下午02:28:50
 */
public class Test{

	public static void main(String[] args) {
		//指定位置,在第几个位置进行剔除
		int M = 3;
		//指定队列的大小
        int N = 10;
        //初始化队列
        Queue q = new Queue();
        //把成员压入队列
        for (int i = 1; i <= N; i++){
            q.enqueue(i);
        }
        //对队列进行循环查找
        try {
	        while (!q.isEmpty()) {
	            for (int i = 0; i < M - 1; i++){
	            	//如果不是指定位置的元素,队列头直接去队尾
					q.enqueue(q.dequeue());
	            }
	            //把指定位置的元素提出队列
	            System.out.println(q.dequeue() + " ");
	        } 
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
	}

}
 
分享到:
评论

相关推荐

    数据结构课程设计--猴子选大王

    这次的课程设计题目——“猴子选大王”,实际上是一个巧妙运用算法解决的问题。这个题目看似简单,却蕴含了丰富的算法思想,通过它我们可以学习到如何利用数据结构来优化解决问题。 首先,我们来看“猴子选大王”的...

    数据结构-猴子选大王..pdf

    本设计的主要目的是解决变相的“约瑟夫环”问题 --- 猴子选大王。从而使复杂的选举工作变得明朗化。全程序以数据结构(C 语言)中的循环单链表为主要的设计支柱,利用了 C 语言简洁紧凑、灵活方便,语法限制不太严格...

    猴子选大王问题(约瑟夫问题).docx

    总的来说,猴子选大王问题的C++解决方案展示了如何利用数组和链表数据结构处理循环和动态数据变化的问题。这两个方法都具有各自的优点:数组实现简洁且内存效率高,但不便于模拟动态删除;而链表虽然更灵活,但可能...

    数据结构-猴子选大王..docx

    本文档旨在解决变相的“约瑟夫环”问题,即猴子选大王的问题。这是一个经典的数据结构问题,通过使用循环单链表来实现猴子选大王的功能。 课程设计的任务是设计一个函数来实现猴子选大王的功能。该函数需要输入两个...

    基础算法-python猴子选大王

    python猴子选大王 #!/usr/bin/python # -*- coding: utf-8 -*- N=int(input()) ls=[i for i in range(1,N+1)] step=2 #步长 ptr=1 while len(ls) &gt; 1: #ptr表示列表中第几个元素,没有第0个元素,只有下标为0的...

    漫话数据结构-猴子选大王.pptx

    《漫话数据结构-猴子选大王》是一个有趣的数据结构应用问题,通常称为“约瑟夫环”或“猴子选大王”。这个问题描述了一个虚拟的猴子选举过程,通过一定的淘汰规则来确定大王。在这个过程中,我们可以看到数据结构在...

    数据结构课程设计报告--猴子选大王.doc

    本设计报告旨在解决"猴子选大王"问题,该问题的目标是:输入m和n,输出最后剩下的猴子编号。为了解决该问题,我们采用了循环链表和动态存储的方法,并使用C语言作为描述语言。 首先,我们对问题进行了分析,确定了...

    数据结构课程设计 猴子选大王(约瑟夫问题)

    数据结构课程设计中,"猴子选大王"(也称为约瑟夫问题)是一个经典的问题,它涉及到数组、链表和循环移位等基础概念。在这个问题中,假设一群猴子围成一个圈,每次从圈中按顺序剔除一只猴子,直至只剩下最后一只,这...

    猴子选大王(C++)带报告

    "猴子选大王"是一个经典的算法问题,通常用于教授编程中的随机数生成和循环结构等基础知识。在这个问题中,一群猴子围成一个圈,每一轮从一只猴子开始按顺时针方向数数,数到特定数值的猴子会被淘汰,这个过程会持续...

    约瑟夫问题(猴子选大王)数学解法

    约瑟夫问题,又称“约瑟夫环”或“猴子选大王”,是一个著名的理论问题,源自古希腊的数学家约瑟夫·弗拉基米尔。这个问题的基本设定是:有一群人围成一个圈,从某个人开始按顺时针方向编号,然后从第一个人开始报数...

    C++猴子选大王问题也即约瑟夫环问题

    “猴子选大王”问题在计算机科学领域通常被称为约瑟夫环问题。该问题源自古罗马历史学家约瑟夫斯的一个故事,讲述了一群人围成一圈,按照特定规则决定谁将被处决或存活下来。在编程领域中,这个问题被广泛用来考察...

    约瑟夫环(猴子选大王)

    环形链表,猴子选大王,数到几出去,从几开始数,由用户输入决定

    基于java数据结构链表写的猴子选大王

    本文将深入探讨一个基于Java数据结构链表实现的经典问题——“猴子选大王”,也称作约瑟夫环问题。该问题源于一个古老的传说,一群猴子围成一个圈,从某一只开始按顺时针方向依次报数,数到特定数值的猴子会被淘汰,...

    猴子选大王问题

    猴子选大王问题(也称为约瑟夫环问题)是经典的计算机科学问题之一,它描述了一个循环队列中的元素(本例中为猴子)按一定规则(如报数)淘汰直至最后剩下一名的过程。 在该问题中,有`n`只猴子围成一圈,从某只...

    约瑟夫环 猴子选大王

    猴子选大王是约瑟夫环的一种趣味化表述,通常用编程语言如C来实现。 约瑟夫环问题描述如下:假设有一群人围成一个圈,从某个人开始按顺时针或逆时针顺序报数,每次数到特定数值的人会被排除出圈,然后从下一个人...

    猴子选大王(C++版)

    《猴子选大王》是一个基于C++编程语言实现的经典算法问题,它源于约瑟夫问题(Josephus Problem)。约瑟夫问题是由数学家约瑟夫·弗朗西斯·里斯提出的一个理论问题,通常用于考察计算机算法和循环理论。在这个问题...

    数据结构 猴子选大王算法

    猴子选大王算法是链表应用中的一个经典示例,它通过模拟一个简单而又趣味十足的场景——猴子选大王,来展示如何使用链表解决实际问题。 这个算法的基本思想是:有m个猴子围成一圈,从某个指定的猴子开始数数,数到n...

    C 猴子选大王 约瑟夫环

    《C语言实现约瑟夫环——猴子选大王问题》 约瑟夫环问题,又称为猴子选大王,是一个著名的理论问题,源自古希腊的传说。问题的基本设定是:一群猴子围成一个圈,从某一只猴子开始按顺时针方向编号,然后从第一只...

    猴子选大王的算法 (约瑟夫环)或称循环链表

    这是大学数据结构的一次上机题,题目是这样的;有M只猴子,依次按1到M的顺序坐好,然后从第一只...直到只剩下最后一只猴子,则那只猴子就是大王。 要求:只输入M N值,就可以得到依次出局的猴子编号, 及大王幸运编号。

    猴子选大王课程设计总结.pdf

    该设计的目标是解决变相的“约瑟夫环”问题,即猴子选大王问题。在该问题中,m只猴子围成一圈,从某一只开始报数,数到n的猴子会被淘汰,直至只剩下一个猴子成为大王。 课程设计的具体要求包括: 1. 输入数据m代表...

Global site tag (gtag.js) - Google Analytics