桟和队列--约瑟夫问题

Time Limit: 1000MS Memory limit: 65536K

题目描述

n个人想玩残酷的死亡游戏,游戏规则如下:

n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。

请输出最后一个人的编号。

输入

输入n和m值。

输出

输出胜利者的编号。

示例输入

5 3

示例输出

4

提示

第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀

代码:

#include <stdio.h>
int main()
{
    int i,n,m,f,r,a[1000];
    scanf("%d%d",&n,&m);
    for(i=0;i<=n;i++)
        a[i]=i;
    f=1;          /*队首*/
    r=n+1;        /*队尾*/
    while(n!=1 && n--)
    {
        for(i=1;i<m;i++)
            a[r++]=a[f++];
        f++;
    }
    printf("%d\n",a[f]);
    return 0;
}

桟和队列--约瑟夫问题

时间: 2024-08-10 23:19:12

桟和队列--约瑟夫问题的相关文章

桟和队列--排队买饭

数据结构实验之队列一:排队买饭 Time Limit: 1000MS Memory limit: 65536K 题目描述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是很聪明的,直接奔政通超市,哈哈,确实,政通超市里面也卖饭,有好几种菜,做的比食堂好吃多了,价格也不比食堂贵,并且买菜就送豆浆,吸引了不少童鞋.所以有时吧,人还是很多的,排队是免不了的,悲剧的是超市只有两个收银窗口. 问题是这样的:开始有两队人在排队,现在咱们只研究第一队,现在我们给每个人一个编号,保证编号各不相同

两个桟实现一个队列

题目:俩个桟实现一个队列,请实现它的俩个函数appendTail/deleteHead 算法思路: 入队:将元素压入桟s1中://appendTail 出队:先判断s2中是否为空,如果不为空,直接弹出栈顶元素:否则,将s1中的元素逐个弹出并压入桟s2中,把最后一个元素弹出并出队://deleteHead 判断队列是否为空(empty()):判断s1/s2中都没有元素时,返回true,否则返回false://Empty 取队头元素(top()):先判断s2中是否为空,如果不为空,直接取s2栈顶元素

合并_01php基础语法(8days)笔记

一.入门指引 1.php是什么? PHP是什么? Hypertext Preprocessor,超文本预处理器 Personal Home Page,个人主页 是一种在服务器端执行的脚本语言,可嵌入到 HTML中,尤其适合 web 开发. ? php可以做什么? 网站,web程序 B/S架构 ? ? 命令行脚本 桌面应用程序 ? ? 二.安装Apache 制作一台服务器,来提高网页服务,只要安装了一个能提供网页服务的软件的电脑,就可以称之为网页服务器. 常见的网页服务器软件 Apache IIS

PHP系列(三)PHP数组与数据结构

  PHP数组与数据结构 数组是把若干变量按有序的形式组织起来的一种形式. 这些数据元素的集 数组分为一维二维三维.索引数组(数组索引是整数)和关联数组 (1)数组的声明 1.一个数组中存的多个内容.数组中的内容叫作"元素" 2.每个元素都是由健和值组成的Key/value $a=array("one"=>"111","two"=>"2222"); 3.下标有二种类型:一种是整数(索引数组).一

PHP基础语法随记

PHP常量: 预定义常量: PHP自身也定义了大量的预定义常量,可以使用get_defined_constants()来查看,比较常用的预定义常量有: PHP_OS:PHP系统. PHP_VERSION:PHP版本. PHP_EOL:换行符(跨平台移植型,很重要),会根据不同的操作系统使用不同的值.不同操作系统换行符不同. window: \r\n   *nix: \n  MAC: \r PHP_INT_MAX:整形的最大值. PHP_INT_SIZE:整形占用的字节数. PATH_SEPARA

约瑟夫环问题(循环队列)

1 ////////////////////////////////////////////////////////////////////////////// 2 // SqQueue.cpp 3 // 4 // author:Leetao 5 ////////////////////////////////////////////////////////////////////////////// 6 // 简介: 7 // 约瑟夫环问题:设有编号为1,2,……,n的n(n>0)个人围成一个

Java使用队列解决约瑟夫问题

约瑟夫问题: 传说在公园1世纪的犹太战争中,犹太约瑟夫是公元一世纪著名的历史学家.在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人俘虏,于是决定了一个流传千古的自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报到第3人该人就必须自杀,然后再由下一个人重新报数,直到所有人都自杀身亡为止.然而约瑟夫和他的朋友并不想遵从这个约定,约瑟夫要他的朋友先假装遵从,他将朋友与自己安排在第_个和第_个位置,于是逃过了这场死亡游戏,你知道安排在了第几个

P1996 约瑟夫问题-题解(队列??明明是单循环链好吗)

一如既往的题目传送:     https://www.luogu.org/problemnew/show/P1996 这里不讲数组模拟的方法(毕竟多做点题的模拟功力足以暴力出这道题),而是讲一种单循环链的做法. 读一下题就能发现题目中线性循环的思想,且题目数据范围不大,便考虑用单循环链模拟计数: 我们用数组来模拟这一链形结构:a[i]存放编号为i的节点的下一个节点的编号,(在本题中初始为a[1]=2,a[2]=3,...,a[n-1]=n,a[n]=1)这样每个节点都被上一个节点联系起来,所有节

约瑟夫问题-Josephus--及实例说明

//---我保证所有的代码都已经经过验证---// 类似约瑟夫的问题又称为约瑟夫环.又称“丢手绢问题”. 这个问题来自于这样的一个关于著名犹太历史学家 Josephus传说: 在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从.首先从一个人开