【C++】约瑟夫环(数组+链表)
基于数组:
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std; int *a;
int *vis; bool isfull(int m)
{
for(int i=;i<m;i++)
{
if(!vis[i])
return false;
}
return true;
} void john(int m,int n)
{
int p=m-;
while(!isfull(m))
{
int left=n;
while(left>)
{
p=(p+)%m;
if(!vis[p])
{
left--;
}
cout<<vis[p];
}
vis[p]=;
cout<<":"<<a[p]<<endl;
}
} int main()
{
int m,n;
while(scanf("%d %d",&m,&n)&&m&&n)
{
a=(int *)malloc(m*sizeof(int));
for(int i=;i<m;i++)
a[i]=i+;
vis=(int *)malloc(m*sizeof(int));
for(int i=;i<m;i++)
vis[i]=; john(m,n);
} return ;
}
基于链表:
#include<iostream>
using namespace std; struct node
{
int data;
node *next;
}; node *head; void john(int m,int n)
{
node *p=head;
node *r=head->next;
while(r->next!=head)
r=r->next;
while(p)
{
if(p->next==p)
{
cout<<p->data<<endl;
return ;
}
int left=n;
while(left>)
{
left--;
p=p->next;
r=r->next;
}
cout<<p->data<<endl;
r->next=p->next;
delete p;
p=r->next;
}
} int main()
{
int m,n;
while(scanf("%d %d",&m,&n)&&m&&n)
{
head=new node();
head->data=;
node *p=head;
int a=;
while(a<=m)
{
node *t=new node();
t->data=a;
p->next=t;
p=p->next;
a++;
}
p->next=head;//形成环
/*
p=head->next;
while(p!=head)
{
cout<<p->data<<endl;
p=p->next;
}
*/
john(m,n);
} return ;
}
运行示例:

tz@HZAU
2019/3/12
【C++】约瑟夫环(数组+链表)的更多相关文章
- 约瑟夫环问题 --链表 C语言
总共有m个人在圆桌上,依次报名,数到第n个数的人退出圆桌,下一个由退出人下一个开始继续报名,循环直到最后一个停止将编号输出 #include <stdio.h>#include <s ...
- 第K人||约瑟夫环(链表)
http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4442 很容易超时 通过数组来记录,删除 //数组从1开始好像不行 后面一些数字就乱码了,因 ...
- javascript中使用循环链表实现约瑟夫环问题
1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...
- 通过例子进阶学习C++(六)你真的能写出约瑟夫环么
本文是通过例子学习C++的第六篇,通过这个例子可以快速入门c++相关的语法. 1.问题描述 n 个人围坐在一个圆桌周围,现在从第 s 个人开始报数,数到第 m 个人,让他出局:然后从出局的下一个人重新 ...
- C语言数组实现约瑟夫环问题,以及对其进行时间复杂度分析
尝试表达 本人试着去表达约瑟夫环问题:一群人围成一个圈,作这样的一个游戏,选定一个人作起点以及数数的方向,这个人先数1,到下一个人数2,直到数到游戏规则约定那个数的人,比如是3,数到3的那个人就离开这 ...
- 约瑟夫环的C语言数组实现
约瑟夫环问题的具体描述是:设有编号为1,2,……,n的n个(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,才从他的下一个人起重新报数,报到m时停止报数,报m的出圈, ...
- 约瑟夫环问题-循环链表VS数组
2013-08-18 21:27:50 循环链表.数组解决约瑟夫环问题的比较 注意几点: 循环链表的建立不难,在删除循环链表中元素时,用pCur->next != pCur判断结束: 每一轮计数 ...
- 简单约瑟夫环的循环单链表实现(C++)
刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...
- 约瑟夫环(Joseph)的高级版(面向事件及“伪链表””)
约瑟夫环问题: 在一间房间总共有n个人(下标0-n-1),只能有最后一个人活命. 按照如下规则去杀人: 所有人围成一圈 顺时针报数,每次报到q的人将被杀掉 被杀掉的人将从房间内被移走 然后从被杀掉的下 ...
- j使用数组实现约瑟夫环 java
我们首先来看一下约瑟夫环问题: 给定m个人,m个人围成一圈,在给定一个数n,从m个人中的第一个人每第n个人便将其除去,求被最后一个出去的人的编号. 思路: 建立一个长度为m+1的数组,将其的内容初始化 ...
随机推荐
- 忘记mysql的登陆密码该怎么办?
1.如果忘记了其他用户的密码,可以使用root账户进入mysql,修改mysql.user表中的用户密码 2.如果忘记了root的mysql密码,可以使用如下方式: 确认服务器处于安全的状态,也就是没 ...
- Django-3-Template模板
模板是html文档+Django逻辑语句的组合. 一.变量和标签 变量通过{{ }}来表示,两个大括号中间是变量名. 标签通过{% %}来表示,就是Python中的函数和方法. 常用标签: {% fo ...
- Web从入门到放弃<5>
<1> CSS_DOM 1,structural layer 2,presentation layer 3,behavior layer style也是一个属性 <!DOCTYPE ...
- kafka知识点详解
第一部分:kafka概述 一.定义(消息引擎系统) 一句话概括kafka的核心功能就是:高性能的消息发送与高性能的消息消费. kafka刚推出的时候是以消息引擎的身份出现的,它具有强大的消息传输效率和 ...
- bzoj 2780
后缀自动机的应用 首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串 如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机) 而这里有很多模式串 ...
- Android 杂谈---ListView 之BaseAdapter
前言 几种适配器里面相对来说比较简单的一种适配器,在使用时需要实现几个方法,并且也需要对convertView进行优化 此篇文章以使用listView与BaseAdapter来实现表格样式的布局举例( ...
- 使用OpenCV训练好的级联分类器识别人脸
一.使用OpenCV训练好的级联分类器来识别图像中的人脸 当然还有很多其他的分类器,例如表情识别,鼻子等,具体可在这里下载: OpenCV分类器 import cv2 # 矩形颜色和描边 color ...
- vmware虚拟机使用静态IP上网的方法
本文转自:https://www.cnblogs.com/flyfish919/p/7083523.html 作者:云里有棵树 我的物理机使用的是路由wifi,然后虚拟机使用静态IP上网的方法总结如下 ...
- day15.Python内置函数
作用域相关 locals() -- 获取执行本方法所在命名空间的局部变量的字典 globals() -- 获取全局变量的字典 print(locals()) print(globals()) {'_ ...
- 3.RNN推导
1.基本RNN结构 这几天想入门NLP,所以开始了解RNN以及一系列变体.首先RNN最原始的结构如下图(图是按自己的理解用visio画的,有错麻烦提一下), 首先我们来说明一下各个符号的定义: 各个变 ...