约瑟夫问题–list模拟循环链表

约瑟夫问题–list模拟循环链表

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

约瑟夫问题



Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

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

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

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

输入

输入n和m值。

输出

输出胜利者的编号。

演示样例输入

5 3

演示样例输出

4
首先说一下写这个之前我是准备徒手艹链表的,可惜意志力实在不咋滴,再加上手头上没课本,之前我有看过C语言版的链表实现,但没动手敲过,都是偷懒用list水过,list是双向链表,但约瑟夫这个问题吧,明显是用循环链表来完毕的,问题来了,本渣不会艹链表啊,木办法仅仅能用list来胡搞了
 
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
int main()
{
 int m,n,i;
 cin>>n>>m;
 list <int> node;
 list <int>::iterator j;
 for(i=1;i<=n;i++)
	node.push_back(i); //编号
 j=node.begin(); 
 while(node.size()>1) //当链表中仅仅剩一个元素时结束
 {
 	for(i=1;i<m;i++) //第k遍遍历
	{
		if(j!=node.end())
			j++;
		else  //重点来了
		{
			j=node.begin();
			j++;  //一開始忘记写这个了 事实上当j=node.end()时就意味着j已经指向node.begin()了,仅仅是由于这不是循环链表,我们须要手动把它改过来
		}
	}
	if(j!=node.end())
	node.erase(j++);
	else   //同上
	{
		j=node.begin();
		node.erase(j++);
	}
 }
 cout<<node.front()<<endl;
 return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118021.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BZOJ 2049: [Sdoi2008]Cave 洞穴勘測 LCT[通俗易懂]

    BZOJ 2049: [Sdoi2008]Cave 洞穴勘測 LCT

    2022年2月3日
    52
  • jetbrains 教育版申请_哪些域名能申请教育版

    jetbrains 教育版申请_哪些域名能申请教育版JetBrains产品教育版申请Pycharm和IntelliJ都是申请的JetBarins官方edu版,功能上应该和professional一样。(虽然咱不一定能用得到pro)以下内容以申请Pycharm为例。事实上,只要能认证成功,所有的产品都可以免费下载激活的。1在官网找到edu版JetBrains官网:https://www.jetbrains.com在主页LeaningTools中找到PyCharmEdu。进入后点击Download,进入如下界面:一般来说下载.exe即可

    2022年8月27日
    1
  • c语言return两个数_c语言里return0有什么用

    c语言return两个数_c语言里return0有什么用c语言return能不能有2个以上返回值c语言return能不能有2个返回值比如说return(a,b)更新时间:2019-05-1806:19最满意答案不是,要想返回2个以上返回值,建议返回值用数组或者参数用指针模式,直接改写2011-05-04回答其他回答如果你想返回多值的话,建议使用数组或指针(数组其实也是指针)2011-05-04回答不能的,除非你定义一个结构typedefstru…

    2025年7月13日
    0
  • dpkg配置包出错_dpkg-reconfigure

    dpkg配置包出错_dpkg-reconfigure2021-10-18by崔斐然dpkg:处理软件包xxx(–configure)时出错解决方法来源:https://blog.csdn.net/jf_xu/article/details/82285008dpkg:处理软件包libicu-dev(–configure)时出错:依赖关系问题-仍未被配置dpkg:依赖关系问题使得libxml2-dev:amd64的配置工作不能继续:libxml2-d…

    2022年10月7日
    0
  • 浅谈大数据的标签管理

    浅谈大数据的标签管理最近参与了一个大数据的项目,是涉及标签管理方面的内容,使我这个初涉入大数据领域的人获益匪浅。标签,也可以叫做Tag,最早出现于2005年(注1),随着Web2.0的Blog应用被广泛使用开来。标签也可以说是一种关键词标记,可以更好的显示和突出搜索的关键词条,以便进行更好的索引和浏览查找。但标签又不同于平常的关键词,它可以使用文章或日志中根本没有出现过的词条来标记。比如一篇关于产品方面的文章,通篇…

    2022年5月8日
    37
  • Spring contextConfigLocation[通俗易懂]

    Spring contextConfigLocation[通俗易懂]SpringcontextConfigLocation  2012-04-0201:20:56|  分类: Spring |  标签:spring工作积累  |字号 订阅spring如何使用多个xml配置文件 1,在web.xml中定义contextConfigLocation参数.spring会使用这个参数加载.所有逗号分割的xml.如果没有这

    2022年6月14日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号