http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4442

很容易超时

通过数组来记录,删除

//数组从1开始好像不行 后面一些数字就乱码了,因为此时now的值使得坐标可能为0,一些情况下,a【0】成功上位,一些却不行。

 #include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t,n,a[];
int k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(int i=;i<n;i++)
a[i]=i;
int now=;
while(n>)
{
now+=k-;
now%=n;
for(int i=now;i<n-;i++)
a[i]=a[i+];
n--;
}
printf("%d\n",a[]+); }
return ;
}

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?cid=5016&pid=4

题意差不多,但是用链表来写//两题数据不一样,用链表解上题会超时

 #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<stdlib.h>
#define mem(a) memset(a,0,sizeof(a))
const double pi=acos(-1.0);
using namespace std;
typedef struct node{ //C++中用typedef定义 则下面的p当struct node用
int num;
struct node*next;
}p;
p*link(int n)
{
p*head=(p*)malloc(sizeof(p));
head->num=;
head->next=NULL;
p*c=head;
for(int i=;i<=n;i++)
{
p*body=(p*)malloc(sizeof(p));
body->num=i;
body->next=NULL;
c->next=body;
c=c->next;
}
c->next=head; //首尾相连
return head;
}
void f(p*head,int k,int m)
{
p*tail=head;
while(tail->next!=head)
tail=tail->next; //尾结点,作删除用
p*pp=head;
while(pp->num!=k)
{
tail=pp;
pp=pp->next;
}
while(pp->next!=pp)
{
for(int i=;i<m;i++)
{
tail=pp;
pp=pp->next;
}
tail->next=pp->next;
free(pp);
pp=tail->next;
}
printf("%d\n",pp->num);
}
int main()
{
int t,n,m;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
p*head=link(n);
f(head,,m);
}
return ;
}

第K人||约瑟夫环(链表)的更多相关文章

  1. 关于递推算法求解约瑟夫环问题P(n,m,k,s)

    一. 问题描述 已知n个人,分别以编号1,2,3,...,n表示,围坐在一张圆桌周围.从编号为k的人开始报数1,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去, ...

  2. 简单约瑟夫环的循环单链表实现(C++)

    刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...

  3. Java数据结构之单向环形链表(解决Josephu约瑟夫环问题)

    1.Josephu(约瑟夫.约瑟夫环)问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m ...

  4. 单向环形链表解决约瑟夫环(Josephus)问题

    一.约瑟夫环问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那 ...

  5. hdu1443(约瑟夫环游戏的原理 用链表过的)

    Problem Description The Joseph's problem is notoriously known. For those who are not familiar with t ...

  6. 约瑟夫环问题 --链表 C语言

    总共有m个人在圆桌上,依次报名,数到第n个数的人退出圆桌,下一个由退出人下一个开始继续报名,循环直到最后一个停止将编号输出 #include <stdio.h>#include <s ...

  7. 约瑟夫环(Joseph)的高级版(面向事件及“伪链表””)

    约瑟夫环问题: 在一间房间总共有n个人(下标0-n-1),只能有最后一个人活命. 按照如下规则去杀人: 所有人围成一圈 顺时针报数,每次报到q的人将被杀掉 被杀掉的人将从房间内被移走 然后从被杀掉的下 ...

  8. 约瑟夫环问题的链表解法和数学解法(PHP)

    约瑟夫环问题 一群猴子排成一圈.按1,2,-,n依次编号.然后从第1仅仅開始数,数到第m仅仅,把它踢出圈.从它后面再開始数,再数到第m仅仅.在把它踢出去-.如此不停的进行下去.直到最后仅仅剩下一仅仅猴 ...

  9. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们!然后今天群里突然有人提出了题目的这个问题:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 ...

随机推荐

  1. 分析Vue框架源码心得

    1.在封装一个公用组件,比如button按钮,我们多个地方使用,不同类型的button调用不同的方法,我们就可以这样用 代码片段: <lin-button v-for="(item,i ...

  2. JsRender 前端渲染模板基础学习

    JsRender前端渲染模板 使用模板,可以预先自定义一些固定格式的HTML标签,在需要显示数据时,再传入真实数据组装并展示在Web页中:避免了在JS中通过“+”等手动分割.连接字符串的复杂过程:针对 ...

  3. 使用XIB 或者storyboard 创建imageView 模式 UIViewContentModeScaleAspectFill  图片越界问题

    ImageView UIViewContentModeScaleAspectFill 超出边界的问题 代码如下 [_photoView setClipsToBounds:Yes];       sto ...

  4. ORA-00845 MEMORY_TARGET not supported on this system 的解决

    本文来源:宁静致远 的<ORA-00845 MEMORY_TARGET not supported on this system 的解决> oracle11g数据库在执行dbca或者调整s ...

  5. http之cdn介绍

    百度百科:CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能 ...

  6. linux之xxx 不在 sudoers 文件中,此事将被报告(转载)

    linux中创建用户命令为:useradd 用户名, eg: useradd test 指定密码:passwd test 但是有时候我们需要使用test运行执行一些root用户才有权限执行的命令,此时 ...

  7. npm 如何查看一个包的版本信息?

    转载. https://blog.csdn.net/cvper/article/details/79543262 有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要 ...

  8. 修改ElementUI源码样式

    参考:https://segmentfault.com/a/1190000010932321

  9. Eclipse中java文件生成jar文件的方法

    在eclpse中找到你要导出的java程序 选中它   单击文件 -->export   在弹出的export对话框中找到 jar File 单击选中-->next   按图示顺序依次 选 ...

  10. 获取git更新文件

    #获取最后一个版本的更新日志workspace2=/testtemplogdir=/testtmprm -rf ${logdir}/change.loggit diff --stat $GIT_PRE ...