博客
关于我
约瑟夫环问题
阅读量:262 次
发布时间: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/

你可能感兴趣的文章
神经网络遗传算法函数极值寻优-非线性函数极值
查看>>
201604-4 游戏 ccf
查看>>
1144. The Missing Number (20)
查看>>
为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接
查看>>
【Spring Boot 26】分别在SpringBoot和Vue中解决跨域问题
查看>>
Class.forName(),classloader.loadclass用法详解
查看>>
tp5.1 页面错误!请稍后再试~ 安装好后,提示错误
查看>>
阿里云 安全组规则 设置某个IP不能访问服务器(出站)
查看>>
系统打了补丁后,IIS装不了的解决…
查看>>
禁止重复提交(JavaScript控制表单…
查看>>
php js 通过sotitle(id,arr)函数输入ID取得返回值
查看>>
删除外键约束
查看>>
c++ 预处理命令 #error 用法
查看>>
C++树的层次遍历(附完整源码)
查看>>
OpenGL fragmentlist片段列表的实例
查看>>
OpenGL hdrb和loom的实例
查看>>
OpenGL packetbuffer分组缓冲器的实例
查看>>
OpenGL shader class自定义着色器的实例
查看>>
OpenGL textures combined组合纹理的实例
查看>>
C语言打印字符串的所有排列组合(附完整源码)
查看>>