古代某法管要判决n个犯人死刑,他有一条荒唐的逻辑,将犯人首位相接排成圆圈,所有计数从1开始;然后从第s个人开始数,每数到m个犯人,则拉出来处决;然后再数m个,数到的犯人再处决;......;但剩下的最后一个犯人可以赦免。编程序,给出处决顺序,并告知哪一个人活下来。

输入:三个整数n(n<=1000),s和m,都可以使用int类型变量表示。

输出:依次输出被处决人员的编号,每个编号之间使用一个西文空格间隔,最后一个编号后无字符。

样例:

输入:6 1 5

输出:5 4 6 2 3 1

//用顺序表存储,虽不比链表存储,但没涉及指针,比较能够看懂
#include <stdio.h>
void jose(int n,int s,int m){int i,w,a[999],j,u=n,b[999];for(i=0;i<n;i++){//给犯人编号,用顺序表存储犯人编号b[i]=i+1;}w=0;while(n>0){if(a[w-1]==0||w==0) a[w]=(s+m-1)%n;//a[w]运算出当前顺序表中第几位被杀else a[w]=(a[w-1]+m-1)%n;if(a[w]==0){if(w==i-1)printf("%d\n",b[n-1]);//用于最后一个编号无字符else printf("%d ",b[n-1]);u--;//输出被杀犯人编号}else  {  if(w==i-1)printf("%d\n",b[a[w]-1]);//用于最后一个编号无字符else printf("%d ",b[a[w]-1]);//输出被杀犯人编号for(j=a[w]-1;u-j+1>=0;j++){//去除被杀掉的犯人,顺序表往前推b[j]=b[j+1];}u--;}n--;w++;}
}
int main(){int n,s,m;scanf("%d%d%d",&n,&s,&m);jose(n,s,m);return 0;
}

约瑟夫问题(Josephus)相关推荐

  1. (python)约瑟夫(Josephus)个人围成一圈,并按顺时针依次编号1-n。从编号为1的人开始,按顺时针方向每隔一 人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿

    约瑟夫(Josephus)环问题 题目:n个人围成一圈,并按顺时针依次编号1-n.从编号为1的人开始,按顺时针方向每隔一 人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿 ...

  2. 约瑟夫(Josephus)问题

    一群小孩围成一圈,任意假定一个数n,从第一个小孩起,顺时针方向数,每数到第m个小孩时,该小孩便离开.小孩不断离开,圈子不断缩小.最后剩下的一个小孩便是胜者.求胜者的编号? /************* ...

  3. 约瑟夫问题(Josephus Problem)的两种快速递归算法

    参考:http://haoyuanliu.github.io/2016/04/18/Josephus/ 转载于:https://www.cnblogs.com/xiaoshayu520ly/p/102 ...

  4. 算法与数据结构(约瑟夫问题)

    约瑟夫问题 Josephus problem 又叫丢手绢问题,N个人围成一圈,第K个人从1开始报数,数到M的人出圈,后一人接着从1开始报数,直到最后剩下一个.例如N=5,K=1,M=2,出圈的顺序是: ...

  5. 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)

    我们来玩丢手绢 昨天我们打扑克,今天我们丢手绢 丢手绢我们都知道这个游戏,他的由来由约瑟夫 (Josephus)提出来的 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3 ...

  6. 循环链表,约瑟夫环问题

    约瑟夫(Josephus)环问题:编号为1,2,3,-,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数, ...

  7. 约瑟夫与海盗--Java解决

    约瑟夫与海盗 ** Question**从前,有15个教徒和15个异教徒在深海上遇险,他们逃到一个岛上.没想到祸不单行,又被海盗抓住.残忍并且好赌的海盗头领决定要将一半的人投入海中,并且想了一个办法来 ...

  8. 约瑟夫问题的解法集锦

    约瑟夫问题的N种解法 1 问题的历史以及不同的版本号 1.1  约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他參加并记录了公元66-70年犹太人反抗罗马的起义. ...

  9. ioS开发之c语言基础-一维数组,字符数组

    // //  main.m //  C4-一维数组,字符数组 // //  Created by dllo on 15/10/8. //  Copyright (c) 2015年 dllo. All ...

  10. 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

最新文章

  1. GO 语言圣经 -在线阅读
  2. C#经典再现——《C#本质论》
  3. vue使用px2rem
  4. jquery的contains如何实现精准匹配
  5. C++ 区分中文,非中文,截取含有中文的string字符串的两种方法
  6. pyqt5能否用于鸿蒙系统,PyQt显示来自opencv的视频流
  7. guns开源项目数据库切换为oracle
  8. get_mempolicy(2) /set_mempolicy(2)/mbind(2)/numa(3) — Linux manual page
  9. Golang并发:再也不愁选channel还是选锁
  10. 伪静态设置php,php伪静态设置
  11. [bug解决] cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘
  12. Smobiler中Poplist控件的用法
  13. [填坑]QT信号与槽机制注意事项
  14. win10系统使用快捷键无法切换窗口怎么办
  15. 【oracle19c静默安装RAC】
  16. Fragstats景观分析研究
  17. dijkstra算法详解加例题分析 NOIP 2012 文化之旅
  18. Python——模块:模块就是程序
  19. 【转】经典论文翻译导读之《A Bloat-Aware Design for Big Data Applications》
  20. 世上无难事只怕有心人,GO!vmware15 安装win10详解

热门文章

  1. 据说,不懂编程的人未来将寸步难行!
  2. win7计算机用户配置文件存储路径,Windows下的用户配置文件管理(一)
  3. 把握问题的关键(转自知乎)
  4. 浅析web api的json参数校验
  5. STM32F407ZG TIM通用定时器
  6. vant weapp 多选上传图片_小程序结合vant weapp的复选框(checkbox)组件实现全选、反选、多选...
  7. 超强教程:如何搭建一个 iOS 系统的视频直播 App?
  8. 华为鸿蒙系统前身,鸿蒙OS四大看点详解!华为的野心不止手机,而是“一统江湖”...
  9. 8. Fabric2.2 区块链农产品溯源系统 - 智能合约设计
  10. 如何写 Makefile 文件