今天在论坛上看到一题,约瑟夫环的:
如何编程实现:输入M,N两个数,从1至N开始循环数数,每数到M输出该数值,直至全部输出。例如M是3,N是20,那么相当有20个人,1,2,3循环报数,数到3的就打印出他的序号,直到所有这20个数全部输出为止。
代码:
public static void test(int m,int n){
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<n;i++) list.add(Integer.valueOf(i+1));
while(!list.isEmpty()){
for(int j=1;j<=m;j++){
if(j == m){
int temp = (int) list.remove(0);
System.out.println(temp);
}else{
int temp = (int) list.remove(0);
list.add(temp);
}
}
}
}
第二种: (求解原因)
public int find(int n, int m)
{
int r = 0;
for (int i = 2; i <= n; i++) {
r = (r + m) % i;
}
return r + 1;
}
分享到:
相关推荐
约瑟夫环问题的形式化描述通常是这样的:设有n个人围成一圈,从第一个人开始顺时针编号为1到n。每次从第m个人开始,每隔m个人剔除一人,直至只剩下最后一个人。这里的m称为“跳跃步长”或“剔除间隔”。求解的问题...
约瑟夫环游戏,也称为约瑟夫问题(Josephus Problem),是计算机科学与数据结构领域中的一个经典问题。这个理论问题源于一个古老的传说,它涉及到在极端条件下生存策略的选择。在约瑟夫环游戏中,人们站成一个圈,并...
该问题的基本形式是:N个人围成一个圈,从第一个人开始报数(从1到M),每数到M的人就被淘汰出圈,并且从被淘汰的下一个人重新开始计数,直到所有人被逐个淘汰为止。问题要求确定每个人被淘汰的顺序。 本篇文章基于...
总的来说,约瑟夫环问题提供了一个很好的机会来练习和理解数据结构、算法和C语言的基本操作。通过单链表和顺序表的实现,我们可以学习到如何在实际问题中运用这些基本概念,同时还能体会到动态数据结构和静态数据...
约瑟夫环问题的基本形式是这样的:n个人围成一圈,从第一个人开始按顺时针方向依次报数,每报到m(m )的人会被排除,然后从下一个人继续报数,直到只剩下最后一个人为止。我们需要找出最后留下的那个人的位置或编号...
《约瑟夫环数据结构课程设计实验报告》 在数据结构的学习中,约瑟夫环问题是一个经典且富有挑战性的算法问题。该问题涉及到链表、循环和计数器等核心概念,对于培养学生的逻辑思维和编程能力具有重要意义。本课程...
### 约瑟夫环知识点详解 ...约瑟夫环问题虽然是一个简单的数学模型,但它包含了丰富的变化形式和实际应用价值。通过对基本算法的理解和对进阶问题的探索,我们可以更深入地了解约瑟夫环背后的逻辑和应用前景。
### 约瑟夫环数据结构实验报告知识点详解 #### 一、需求分析 1. **人数与报数上限:** 在本次实验中...通过上述步骤,我们不仅能够理解约瑟夫环的基本概念和算法原理,还能够掌握利用C语言进行数据结构编程的基本方法。
约瑟夫环问题的基本形式是这样的:有一群人围成一个圈,按照顺时针或逆时针顺序报数,每报到特定数字的人会被排除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。问题的关键在于找出这个最后幸存者。 二...
除了基本形式,约瑟夫环问题还有多种变体,如多报数间隔、不同起点等。解决这些变体可以锻炼编程思维,加深对数据结构和算法的理解。 6. **www.pudn.com.txt**: 这个文件可能是提供问题背景、算法介绍或者程序...
约瑟夫环(Josephus Problem)是一个著名的理论问题,源于公元前一世纪犹太历史学家Flavius Josephus提出的一个故事。在这个问题中,人们站成一个圈,并按顺时针或逆时针顺序报数,每次数到特定数值的人会被排除出圈...
### 约瑟夫环程序的关键知识点 #### 1. 实验目的与要求 - **实验目的**:通过本实验,学生将加深对C++语言基本编程方法的理解,并掌握在集成开发环境中进行程序调试的方法。此外,还将学习如何使用指针、模板类以及...
约瑟夫环问题的基本形式是这样的:n个人围成一圈,从第一个人开始按顺时针方向计数,每数到m个人就淘汰该人,然后再从下一个人继续计数,直至只剩最后一个人为止。问题求解的目标是确定最后幸存的人的初始位置。 ...
约瑟夫环问题的具体形式多种多样,但基本思想是相同的。例如,假设n个人围成一圈,从第一个人开始按顺时针方向编号,从第m个人开始报数,每报到m的人将被淘汰,直到只剩下最后一个人为止。求解这个问题的关键在于...
【约瑟夫环问题】是一个经典的递归问题,也常被用作计算机科学中的算法练习。该问题描述了一种循环报数的淘汰机制,通过模拟这个过程,我们可以学习到如何运用线性表(顺序表)的数据结构来解决实际问题。 在顺序边...
约瑟夫环问题的基本形式是这样的:假设有一群人围成一个圈,从某个人开始按顺时针方向依次报数,每报到特定数值的人将被排除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。这个最后剩下的那个人即为...
问题的基本形式是:人们站成一个圈,从某个人开始按顺时针方向报数,每报到特定数值的人会被排除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。这个最后的人被称为“约瑟夫幸存者”。在本题中,我们面对...
总的来说,约瑟夫环问题是一个引人入胜的算法问题,它不仅展示了链表、循环、队列等基本数据结构的运用,还激发了对高效算法设计的思考。无论是作为儿童数数游戏的趣味性模拟,还是作为计算机科学教育的实践案例,...
约瑟夫环的问题形式多种多样,但基本思路都是通过递归或循环来解决。最基础的问题是:n个人围成一圈,从第一个人开始报数,每次数到m的人会被淘汰,直到只剩下最后一个人。我们可以用一个数组或者链表来模拟这个过程...
在本资源中,"基于java的约瑟夫环演示Applet源码.zip" 提供了一个用Java实现的经典算法——约瑟夫环(Josephus Problem)的示例。约瑟夫环是计算机科学中一个著名的理论问题,它涉及排列和消除元素的逻辑。 约瑟夫...