博客
关于我
约瑟夫环问题
阅读量:263 次
发布时间:2019-03-01

本文共 1146 字,大约阅读时间需要 3 分钟。

描述

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

输入

8 1 3 (n=8 k=1 m=3 )

输出

7 (剩下的那个)

样例输入

8 1 3

样例输出

7
#include 
using namespace std;struct Node{ int data; struct Node *next;};class List{private: Node *rear;public: List(int n); void solved(int m,int k);};List::List(int n){ Node *s=NULL; rear=new Node; rear->data=1; rear->next=rear;//头尾结点等同于一个结点形成循环链表 for(int i=2; i<=n; i++) { s=new Node; s->data=i; s->next=rear->next; rear->next=s; rear=s; //方便后续的插入,移动rear结点也就是新加入的s变为rear结点 } //rear=rear->next;//回到最初的第一个结点}void List::solved(int m,int k){ Node *pre=rear,*p=rear->next;//初始化两个工作指针 int cnt=1; for(int i=1; i
next;//工作指针同时后移,寻找开始的k } while(p->next!=p) { if(cnt
next;//工作指针同时后移 cnt++; } else{ pre->next=p->next;//将结点p摘链 delete p;//移除节点 p=pre->next;//重新初始化结点p cnt=1; } } cout<
data<
>n>>k>>m; List A(n); A.solved(m,k); return 0;}

 

转载地址:http://troo.baihongyu.com/

你可能感兴趣的文章
夜光:基于 SpringMVC 框架的图片视频库系统的设计与实现 (一)
查看>>
夜光:计算机网络笔记(七)
查看>>
夜光带你走进 C语言(五十八)
查看>>
夜光带你走进 C语言(八十五)
查看>>
python作业之JSON数据的处理
查看>>
Aid Learning0.87F3安装vue.js
查看>>
Springboot添加log4j日志
查看>>
Could not resolve host: mirrorlist.centos.org; 未知的错误
查看>>
导入工程时出现错误
查看>>
第一章:QT的概述
查看>>
HTML中!DOCTYPE含义以及各个信息参数的详解
查看>>
【Java】Java基础之局部变量和成员变量
查看>>
如何删除SQL Server 2014
查看>>
手把手教你用docker部署自己的npm私服verdaccio
查看>>
error TS1192: Module ‘“fs“‘ has no default export.
查看>>
Java高并发系列(读书笔记)——等待(wait)和通知(notify)机制
查看>>
Java高并发系列(读书笔记)——等待线程结束(join)和谦让(yield)
查看>>
MyBatisPlus快速入门——MyBatisPlus集成Druid配置应用
查看>>
react项目:react拦截器和token问题
查看>>
2020-11-22周总结
查看>>