第K人||约瑟夫环(链表)

时间:2021-03-24 08:57:36

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&lpar;n&comma;m&comma;k&comma;s&rpar;

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

  2. 简单约瑟夫环的循环单链表实现&lpar;C&plus;&plus;&rpar;

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

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

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

  4. 单向环形链表解决约瑟夫环&lpar;Josephus&rpar;问题

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

  5. hdu1443&lpar;约瑟夫环游戏的原理 用链表过的&rpar;

    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)的高级版(面向事件及&OpenCurlyDoubleQuote;伪链表””)

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

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

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

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

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

随机推荐

  1. js之数据类型

    1.数组类型 var Array=new Array(); 长度可变 var Array=new Array(n); 长度为n的数组 var Array=new Array("A" ...

  2. mysql&comma;命令导入&bsol;导出表结构或数据

    在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看: mysqldump 最常用的: mysqldump -uroot -pmysql databasefo ...

  3. hdu 4619 Warm up 2 网络流 最小割

    题意:告诉你一些骨牌,然后骨牌的位置与横竖,这样求最多保留多少无覆盖的方格. 这样的话有人用二分匹配,因为两个必定去掉一个,我用的是最小割,因为保证横着和竖着不连通即可. #include <s ...

  4. logstash通过kafka传输nginx日志(三)

    单个进程 logstash 可以实现对数据的读取.解析和输出处理.但是在生产环境中,从每台应用服务器运行 logstash 进程并将数据直接发送到 Elasticsearch 里,显然不是第一选择:第 ...

  5. C语言&lowbar;初步了解一下指针

    指针的基本概念 在计算机中,所有的数据都是存放在存储器中的. 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等.为了正确地访问这 ...

  6. 好用的Chrome插件推荐

    无扩展,不 Chrome :几款 Chrome 扩展程序推荐 相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多 ...

  7. 对JS作用域和作用域链的理解

    理解好javascript的变量作用域和链式调用机制对用好变量起着关键的作用,下面我来谈谈这两个概念的理解. (1)链式调用机制 作用域链的定义:函数在调用参数时会从函数内部到函数外部逐个”搜索“参数 ...

  8. python&plus;imageMagick写的一个压缩图片脚本

    !/usr/bin/python import os import cPickle as p import re import Image def imageCompre(imagedir = '.' ...

  9. Golang实现冒泡排序法

    关于冒泡排序的原理请看本博客这篇文章冒泡排序法原理讲解及PHP代码示例 //代码 package main import ( "fmt" ) func main() { //定义一 ...

  10. 【Servlet】监听器入门