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

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

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

约瑟夫问题--list模拟循环链表此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

约瑟夫问题



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;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python中产生随机数的代码_python生成1~10的随机偶数

    python中产生随机数的代码_python生成1~10的随机偶数Python产生随机数:一.Python自带的random库1.参生n–m范围内的一个随机数:random.randint(n,m)2.产生0到1之间的浮点数:random.random()3.产生n—m之间的浮点数:random.uniform(1.1,5.4)4.产生从n—m间隔为k的整数:…

  • mysql做pisa_群晖nas修改MariaDB配置文件

    mysql做pisa_群晖nas修改MariaDB配置文件家里的Nas使用率越来越高,平均每周手工重启一次,系统运行还算稳定。最近安装了WebStation,MariaDB等套件,用来作为家里的开发测试环境,使用下来还不错。理论上解析个动态域名到nas就能实现对外提供web服务了。100M电信光纤,上行2M,做个个人网站访问速度凑合着应该还是能用的。在导入数据时,因数据库包比较庞大(>100M),需要修改max_allowed_packet字段。…

  • Linux下安装Redis

    Linux下安装Redis官网下载链接:https://redis.io/download1、选择Stable(5.0)下的Download5.0.0链接进行下载(stable是稳定版本,默认下载的是linux版本)2、下载完成之后,打开WinSCP,把我们下载好的Redis压缩包,上传到Linux的/mnt/文件目录下3、使用putty连接到我们的Li…

  • 拆解滴滴大脑 叶杰平谈出行领域算法技术

    拆解滴滴大脑 叶杰平谈出行领域算法技术近日,滴滴研究院副院长叶杰平在上海一场内部分享会上详细解读了滴滴大脑,这是外部首次窥探到较为完整的滴滴算法世界,并且一直潜水的产品“九霄”也首次露出真容。滴滴出行研究院副院长叶杰平滴滴大脑由三部分组成叶杰平将滴滴大脑这个智能系统分为三部分,分别是大数据、机器学习和云计算。其中大数据就像工业革命时代的煤一样举足轻重,人工智能需要数据进行训练,纵观应用级深度学习的成功案例,他们都获得了海量数据,…

  • JVM初探(一):jvm内存结构[通俗易懂]

    JVM初探(一):jvm内存结构[通俗易懂]一、概述我们知道java代码先编译为.class文件,然后再将.class文件交由jvm执行。在程序运行的这一过程中,jvm会将其管理的内存空间划分为不同的区域,这些区域各有各的用途,我们将其分为五

  • navicat15激活码大全(JetBrains全家桶)2022.03.02[通俗易懂]

    (navicat15激活码大全)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html40ZKSWCX8G-eyJsaWNlbnNlSWQi…

发表回复

您的电子邮箱地址不会被公开。

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