Josephus约瑟夫环问题

Josephus(约瑟夫环)问题 Josephus问题是说,一群小孩围成一圈,任意假定一个数m,从第一个小孩起,顺时针方向数,每数到第m个小孩时,该小孩便离开。小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。 题目要求:顺序打印离开的小孩及最后的胜利者。 分析:为了解决这个问题,可以定义一个数组a,元素的个数就是小孩的个数。每个数组元素初始赋一个不为0的值作为小孩的序号,当小孩离开时,修改对应的数组元素的值 阅读详情

求解Josephus问题:设有n个数构成一个环链,现从第k个数开始数数,数到m的那个数被弹出,然后从该数的下一个数重新开始数数,数到m的那个数又被弹出,如此重复,直到所有的数均被弹出为止。输出这些数弹出的序列。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct Node {
 int no;
 int m;
 struct Node *next;
} Node, *LinkList;

LinkList Creat(int m, int n, int mm[])
{
 LinkList L;
 int i;
 Node *r,*s;
 L=(LinkList)malloc(sizeof(Node));
 r=L;
 for (i=0; i<n; i++)
 {
  s=(Node *)malloc(sizeof(Node));
  if (s==NULL)
  {
   printf("错误:内存不足!/n");
   return NULL;
  }
  s->no=i+1;
  s->m=mm[i];
  r->next=s;
  r=s;
 }
 L->no=0;
 L->m=0;
 r->next=L;
 return L;
}

void Josephus(LinkList L, int m, int n)
{
 int i,j,nn=n;
 Node *p,*q;
 p=L;
 for (i=0;i<n;i++)
 {
  if (m<2) m=m+nn;
  for (j=0;j<m-2;j++)
  {
   if (p->no==0) p=p->next;
   p=p->next;
  }
  q=p->next;
  if (q->no==0) q=q->next;
  m=q->m;
  printf("%4d",q->no);
  p->next=q->next;
  free(q);
  nn--;
  p=p->next;
 }
}

main()
{
 int m,n,i,mm[MAXSIZE]/*={3,1,7,2,4,8,4}*/;
 int ch=0, c;
 LinkList L;
/* m=20;n=7;
 Only For Test*/
 printf("输入m:");scanf("%d",&m);
 printf("输入n:");scanf("%d",&n);
 printf("输入密码:");
 for (i=0;i<n;i++)
  scanf("%d",&mm[i]);
 L=Creat(m,n,mm);
 printf("得到序列如下:/n");
 Josephus(L,m,n);
 printf("/n");
 return 0;
}

数据结构与算法 约瑟夫环问题 Josephus问题 问题描述:有 n 个人围成一个圈,从第 k 个人开始从 1 开始一个人一个人的报数,数到第 m 个人,让他出列;然后从出列的下一个人重新开始报数,数到第 m 个人,再让他出列,……,如此反复直到圆圈中只剩一个人为止,请模拟这一工作过程。即已知:人数 n,初始编号 k,出列值 m,而且每次的 m 值都不一样;输出整个过程中,出列编号的序列 L,以及最后留下的元素位置。建立一个无头结点的单向循环链表,... 阅读详情

相关推荐

“Java实现Josephus约瑟夫环问题的优雅解决方案“

Josephus约瑟夫环问题是一个经典的数学问题,涉及到一个由n个人组成的环,每次数到一个特定的数字m,该人将被移除,然后从下一个人重新开始数。在本文中,我们将展示如何使用Java编程语言优雅地解决Josephus约瑟夫环问题。在每次循环中,我们计算出下一个被移除的人的索引,然后将其从循环链表中移除。通过使用Java编程语言和循环链表,我们能够以一种优雅的方式解决这个经典问题。该程序将打印出最后幸存者的编号,以展示问题的解决结果。首先,让我们定义一个名为Josephus的类,该类将包含解决问题所需的方法。

ByteWhizX的博客 200

用LabVIEW解决约瑟夫问题

komorebi121的博客 982

练习LabVIEW第六题

编程求Josephus(约瑟夫环)问题:m个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第n个小孩子离开,这样反反复复,最终只剩下一个小孩子,求第几个小孩子留下?

qq_25756737的博客 981

【数据结构实验】约瑟夫环

分别利用线性表的顺序存储形式和链式存储形式,按照出列的顺序印出各人的编号,包含完整源代码。

雨林木风的博客 2228

利用LABVIEW计算的约瑟夫环

基于labview的约瑟夫环,简单可用,希望对需要用到的人有所帮助

LabVIEW练习6,编程求Josephus(约瑟夫环)问题

LabVIEW练习第六题,编程求Josephus(约瑟夫环)问题:m个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第n个小孩子离开,这样反反复复,最终只剩下一个小孩子,求第几个小孩子留下?

[PTA]约瑟夫环(Josephus)问题

约瑟夫环

weixin_52192405的博客 3995

labview的josephus问题编程

labview的josephus问题编程

约瑟夫环问题(Josephus)

问题描述:设有编号 1,2,···,n 的 n(n>0)个人围成一个圈,从某个人开始报数,报到 m 时停止报数,报 m 的人出圈,再从他的下一个人起重新报数,报到 m 时停止报数,报 m 的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定 n 和 m 后,设计算法求 n 个人出圈的次序。 在解决这个问题之前,我们先来了解一个小故事。 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也

m0_57587757的博客 2969

一种利用labview求解Josephus问题的简单方法

编程求Josephus问题:m个小孩围成一圈,从第一个小孩开始顺时针方向每数到第n个小孩时这个小孩就离开,最后剩下的一个小孩是胜利者。求第几个小孩是胜利者。

用LabVIEW编写的解约瑟夫环问题

用LabVIEW编写的解约瑟夫环问题的程序。可以自己设置参数和变量。

Josephus(约瑟夫环)问题

#include using namespace std; //链表结点kid,其中number为这个人的编号 struct kid { int number; kid *next; }; //约瑟夫环类 class joseph_ring { private: int n;//用于存放人数 int m;//用于存放初始密码 kid *head;//链表的头

u012519969的专栏 770

约瑟夫问题的一种解决方法

数据结构的课程作业

josephus约瑟夫环问题

import java.util.Scanner; //约瑟夫环 public class josephus { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt();//一共多少人 int s = scan.nextInt();//开始位置 int d = scan.nextInt..

m0_61983575的博客 182

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 414

从零开始用STM32驱动RGB屏:配置PCLK、DE同步信号的避坑指南

本文详细介绍了如何使用STM32驱动RGB接口LCD屏幕,重点解析了PCLK配置、同步信号极性和DE使能等关键参数的设置方法。通过实战代码示例和常见问题排查指南,帮助开发者避免常见配置错误,实现稳定的显示效果。特别针对800x480 IPS屏提供了优化建议和调试技巧。

sky77的博客 541

(Josephus )约瑟夫环问题 C语言实现

约瑟夫环问题的一种描述是: 编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。 一开始任选一个整数作为报上限制m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。 报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数, 如此下去,直至所有的人全部出列为止。试设计一个程序,求出列顺序。 #include<stdio.h> ...

weixin_44040023的博客 4678

人工智能,不止于模型:四步实现完整工作流

工程师越来越多地致力于将人工智能 (AI) 集成到自己的项目和应用中,同时不断着力提升自己的 AI 技能。面对 AI 问题,工程师首先要了解什么是 AI,以及如何将它纳入当前工作流,这看似简单,实则未必容易。在 Google 中搜索“什么是 AI?”会得到数百万条结果,包括不同程度的技术和相关信息。那么,对工程师而言,AI 意味着什么?人们对 AI 的关注主要集中在 AI 模型上,受此影响,工程师会迅速投入 AI 建模的研究。

r1832644594的博客 2820

约瑟夫环之二(用递归的思想解决Josephus问题)

原来写过一篇关于约瑟夫问题的链表实现解法 ,刷九度题到http://ac.jobdu.com/problem.php?pid=1356 时,再次遇到这个问题,记下用递归思想解决约瑟夫问题的方法: 初始情况: 0, 1, 2 ......n-2, n-1 (共n个人) 第一个人(编号一定是(m-1)%n,设之为(k-1) ,读者可以分m=n的情况分别试下,就可以得出结论) 出列之后,剩下的n-1

wusuopuBUPT的专栏 2万+

SAC安装与相关库文件(.so)的安装

摘要 SAC: Seismic Analysis Code 是用于地震信号处理的一套软件。 本文将介绍SAC的安装,以及安装时遇到的一些问题。主要是一些动态库(lib**.so)找不到的问题。 本文的环境 64位的 Ubuntu 16.04 64位的系统是安装出现问题的主要原因 1. SAC获取与安装 SAC 的安装,只需要解压,然后修改环境变量即可!!!不需要任何编译!!! 1.1. SAC 获取与解压 SAC软件获取地址:http://ds.iris.edu/ds/nodes/dmc/forms/s.

WangCY的博客 4336

置顶必读(1) | 滚雪球学Oracle教程导航帖,带你弯道超车(持续更新中)

什么是数据库管理系统(DBMS),Oracle在行业中的领先地位Oracle数据库的市场竞争与主要应用场景Oracle数据库的核心功能模块与未来技术发展趋势约束的高级应用:主键、唯一性、外键设计与管理表分区、视图、同义词与序列的最佳实践PL/SQL编程的设计哲学,如何高效使用Oracle SQL DeveloperPL/SQL代码调试与优化技巧RAC集群中的高可用性设计,负载均衡与并行查询的配置集群中的缓存一致性管理。

**My Coding Family** 1万+

约瑟夫环问题 Josephus

用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus),据说是M.O.哥去面google的时候碰到的一道题,Josephus问题在《具体数学》里面的第一章有详细的描述并且建立了一套数学模型...但是面试无非就是写个简单的程序,考验一下链表处理能力吧提示:   由于当某个人退出圆圈后,报数的工作要从下一个人开始继续,剩下的人仍然是

zhao0057的专栏 858

【图像超分】论文复现:经典超分 | SAN的Pytorch源码复现,跑通源码,适配高版本的python/pytorch/cuda,使用EDSR-PyTorch进行训练和测试

本文介绍了单幅图像超分辨率重建方法SAN(二阶注意网络)的代码实现。文章详细说明了在高版本Python/Pytorch环境下适配SAN源码的方法,并提供了修改后的完整代码和预训练模型下载链接。 主要亮点包括: 将SAN模型实现整合到EDSR-Pytorch框架中,解决了高版本环境下的兼容性问题 提供了完整的数据集准备指南(DIV2K训练集和5个测试集) 给出了详细的测试命令,涵盖x2、x3、x4不同放大倍率 公开了预训练模型和可视化结果的下载资源 提供了修改后的适配高版本环境的代码。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1414

约瑟夫环问题(Josephus)

约瑟夫环:用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至最后一个元素并输出该元素的值。 一、循环链表:建立一个有N个元素的循环链表,然后从链表头开始遍历并记数,如果计数值为M,则输出并删除该元素,继续循环(其实是N-1次),当当前元素与下一元素相同时退出循环。 #include <stdio.h> #include <stdlib.h&g...

diaojianben1018的博客 211

基于STM32设计的指针式电子钟与万年历(升级版)

这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。

1万+

基于STM32L4XX、HAL库的RTL8211FSI-CG以太网收发器(PHY)驱动程序设计

一、简介:RTL8211FSI-CG是Realtek公司生产的一款高性能、低功耗的单端口10/100M以太网收发器(PHY)。它通过RMII(Reduced Media Independent Interface)或MII接口与MAC控制器连接。

zhusl6688的博客 533
下一篇: 城市信息实习题
studydaydayup
博客等级 码龄22年 2粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值