数据结构与算法--约瑟夫问题
时间:2020-04-18
本文章向大家介绍数据结构与算法--约瑟夫问题,主要包括数据结构与算法--约瑟夫问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述
已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从k开始报数,数到m的那个人又出列;一词重复下去。直到圆桌的人全部出列。试用C++编程实现
核心步骤:
- 建立一个具有n个链节点、无头节点的循环链表
- 确定第一个报数人的位置
- 不断地从链表中删除链节点,直到链表为空
编程实现
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#define ERROR 0
typedef struct LNode
{
int data;
struct LNode *link;
}Lnode, *LinkList;
void JOSEPHUS(int n, int k, int m)
{
// p为当前节点,r为辅助节点,指向p的前区节点,list为头节点
LinkList p, r, list, curr;
// 构建循环链表
p = (LinkList)malloc(sizeof(LNode));
p->data = 0;
p->link = p;
curr = p;
for (int i = 1; i<n; i++)
{
LinkList t = (LinkList)malloc(sizeof(LNode));
t->data = i;
t->link = curr->link;
curr->link = t;
curr = t;
}
// 把当前指针移动到第一个报数的人
while(k--) r=p, p=p->link;
while(n--)
{
for (int s=m-1;s--;r=p, p=p->link);
r->link = p->link;
printf("%d->", p->data);
free(p);
p = r->link;
}
}
main()
{
JOSEPHUS(13, 4, 4);
}
原文地址:https://www.cnblogs.com/CocoML/p/12726957.html
- NoSQL篇 | NoSQL从小白到码神 之 Redis篇
- Neutron和ONOS集成实践
- 基于OpenDaylight和OVSDB搭建VxLAN网络
- 史上最强----机器学习经典总结---入门必读
- SDNLAB群分享(四):利用ODL下发流表创建VxLAN网络
- Neutron集成ONOS源码分析
- “访问限制”&“代理访问”实验
- OpenDaylight Lithium-SR2 Cluster集群搭建
- Linux | CentOS7下会玩JDK不?你确定?
- Linux | 不懂Linux的码神,不是真正的菜鸟
- 初体验Spring Boot 2支持的HikariCP连接池
- 快来了解JDK10中引入的全新JIT编译器:Graal
- 基于Ryu打造自定义控制器
- Junit 5新特性全集
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 气哭老板的顶级密钥存放方案,又做了一件蠢事
- 构建没有数据集的辣辣椒分类器,准确性达到96%
- 由 Redis 分布式锁造成的重大事故
- 10分钟搞定 Java 并发队列好吗?好的
- MySQL 案例:关于程序端的连接池与数据库的连接数
- spark和kafka jar包冲突NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream
- 聊聊claudb的scripting command
- PHP怎么获取视频总时长的函数方法
- 构建Docker私有仓库
- Dockerfile使用
- Nginx+KeepAlived实现高可用
- Docker使用
- 高性能反向代理器Nginx
- Docker初识
- Rabbit-使用