约瑟夫问题

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

约瑟夫问题--list模拟循环链表的更多相关文章

  1. POJ 3750 小孩报数问题 (线性表思想 约瑟夫问题 数组模拟运算的 没用循环链表,控制好下标的指向就很容易了)

    小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10423   Accepted: 4824 Descripti ...

  2. uva133 The Dole Queue ( 约瑟夫环的模拟)

    题目链接: 啊哈哈,选我选我 思路是: 相当于模拟约瑟夫环,仅仅只是是从顺逆时针同一时候进行的,然后就是顺逆时针走能够编写一个函数,仅仅只是是走的方向的标志变量相反..还有就是为了(pos+flag+ ...

  3. P1145 约瑟夫 W(模拟)

    暴力+模拟 #include<iostream> #include<cstring> using namespace std; int ans, k, k2; ]; bool ...

  4. ZOJ 3492 模拟循环链表线性查找

    WA了好几次最后找到错因是因为数组开小了! = = string whose length never exceeds 20 所以至少要开到21 = = ,我却一直开20 ╮(╯▽╰)╭ AC代码: ...

  5. 【洛谷P1996】约瑟夫问题

    约瑟夫问题 链表模拟大概是正解 #include<iostream> using namespace std; struct node{ //单链表 int d; node *next; ...

  6. 约瑟夫(Josephus)问题~转

    本文都是转的,一个是转博客,一个是转贴吧,前者详细,后者"强,无敌"! 博客转: 以前就知道约瑟夫问题是模拟,今天我才发现一些约瑟夫问题可以使用数学解法得出!真是强悍啊!约瑟夫问题 ...

  7. 一模 (1) day1

    第一题:(水题) 题目大意:求出n个  X% (X是小于等于2位的整数) 的乘积,去掉末尾的0: 解题过程: 1.直接 把整数乘好,然后确定小数点的位置,去掉多余的0 输出即可. 第二题:(搜索题) ...

  8. 入门经典——基础数据结构专题(List)

    UVA127 链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  9. 2016级算法第二次上机-E.AlvinZH的儿时梦想——运动员篇

    862-AlvinZH的儿时梦想--运动员篇 思路 难题. 应该想到,不管给出的数据如何,每一个淘汰的人不会对最终答案产生任何影响,所以每次淘汰就把人除掉就可以了,最后剩下的两个人计算它们从开始到相遇 ...

随机推荐

  1. QT中.pro文件的写法

    QT中.pro文件的写法   qmake 变量 含义 #xxxx 注释, 从“#”开始,到这一行结束 SOURCES 指定源文件 SOURCES = *.cpp 对于多源文件,可用空格分开 SOURC ...

  2. Qt 打包发布 不能动态打开图片显示问题

    刚写完一个图片标注工具, 发现在我电脑可以实时打开照片显示出来,在他人的电脑上就不可以. 原来Qt默认只识别png 具体解决方案: 原地址:http://blog.csdn.net/goodlixue ...

  3. hbase memstorelab

    关于MemStore的补充 在通过HStore.add向store中加入�一个kv时,首先把数据写入到memstore中.这一点没有什么说明: publiclongadd(finalKeyValue ...

  4. Servlet的学习之Request请求对象(2)

    在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...

  5. sql为数字添加千分位(也就是钱的格式)

    感觉这个东西在项目中用得挺多的,之前在前台页面是用正则来处理,现在由于是数据查询,所以直接在查出数据的时候将其转为指定的千分位格式,省的前台再处理,不讲原理,因为我也看不懂,不过会用就行了,在网上找了 ...

  6. Perl BEGIN块和END块

    [root@wx03 5]# cat a5.pl END {print cccccccccccc."\n"}; print "aaaaaaaaaaaaa\n"; ...

  7. 开发指南专题八:JEECG微云高速开发平台数据字典

       开发指南专题八:JEECG微云高速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.下面拉框标签<t:dictSele ...

  8. ADODB.Connection 错误 '800a0e7a'

    ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /conn.asp,行 6 因为系统是64位的win7或win8.1所以会出现这个问题,解决方法如 ...

  9. jquery ajax验证用户名是否存在(后台spring mvc)

    controller层 @ResponseBody @RequestMapping(value = "/user/isExist", produces = "applic ...

  10. 自适应滤波器(Adaptive Filter)

    ======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...