python类约瑟夫环原创问题求解 求大神

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python类约瑟夫环原创问题求解 求大神相关的知识,希望对你有一定的参考价值。

60个人从1开始编号每人拿一个号码牌排成圈,从 1开始报数,
第一次报数到2的人出列,然后从出列者的下一个人重新报数
第二次报数到3的人出列,然后从出列者的下一个人重新报数
第三次报数到4的人出列,然后从出列者的下一个人重新报数
….以此类推,直到所有人都出列,编程实现输出出列号码序列

COUNT = 60  # 总人数
INDEX_FIRST = 2   # 第一次站出来的是2号

origin = list(range(1, COUNT+1))
res = []
index_label = INDEX_FIRST - 1
index_temp = 0
while origin:
    index_temp = (index_label + index_temp) % len(origin)
    res.append(origin.pop(index_temp))
    index_label += 1

print(res)

请点击输入图片描述

参考技术A PEOPLE_MAXLEN=60
people=[i for i in range(1,PEOPLE_MAXLEN+1)]

index=0
order=0
flag=2
result=[]
while people.count(-1)!=PEOPLE_MAXLEN:
    if people[index]!=-1:
        order+=1
        if order==flag:
            result.append(people[index])
            people[index]=-1
            flag+=1
            order=0

    index=(index+1)%PEOPLE_MAXLEN
print(result)

py3.7

本回答被提问者采纳
参考技术B python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。

java 蓝桥杯 约瑟夫环

约瑟夫环

问题描述
n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。(报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。求最后剩下的人的编号。这就是著名的约瑟夫环问题。本题目就是已知 n,k 的情况下,求最后剩下的人的编号。

题目的输入是一行,2个空格分开的整数n, k。
约定:0 < n,k < 1百万

要求输出一个整数,表示最后剩下的人的编号。

样例输入:

10 3

样例输出:

4

思路见代码及注释

import java.util.Scanner;

public class Main 
	static int out=0;//标记已被淘汰的人数
	public static void main(String[] args) 
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		//将n个人存储在数组中
		int[]arr=new int[n+1];
		for (int i = 1; i < arr.length; i++) arr[i]=i;
		//动态变化的索引,用于模拟循环报数
		int in=1;
		int ik=1;
		//当淘汰人数等于n-1时会跳出循环
		while (out<n-1) 
			//被置为0的视为已经被淘汰,所以碰到0和碰到非0的操作是不一样的
			if(arr[in]==0) 
				//已被淘汰 不需要报数
				if(in==n)in=1;else in++;
			else 
				if(ik==k) 
					arr[in]=0;//置为0(淘汰)
					ik=0;//报数从1开始,因为下面有K++ 所以置0
					out++;
				
				if(in==n)in=1;else in++;
				ik++;
			
		
		//这时候数组中肯定只剩一个人不为0了,那么这个人的序号就是最后的answer
		for (int i = 1; i < arr.length; i++) 
			if(arr[i]!=0) 
				System.out.println(arr[i]);
				break;
			
		
	

以上是关于python类约瑟夫环原创问题求解 求大神的主要内容,如果未能解决你的问题,请参考以下文章

hdu5643, 递归求解约瑟夫环问题

约瑟夫环问题,一道经典的数据结构题目

约瑟夫环

Python代码求解释 求大神解释一下这段代码 详细点 最好每句加上注释 谢了

c语言问题求指教啊。问题在代码中标记了。

python3约瑟夫环问题