首页 > 代码库 > 用C++实现约瑟夫环的问题
用C++实现约瑟夫环的问题
约瑟夫问题是个有名的问题:N个人围成一圈。从第一个開始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。
比如N=6,M=5。被杀掉的人的序号为5,4,6。2。3。最后剩下1号。
假定在圈子里前K个为好人,后K个为坏人。你的任务是确定这种最少M,使得全部的坏人在第一个好人之前被杀掉。
//----数学中有乘法口诀。
。那仅仅是工具。我们都非常熟悉。
//----C++中有一些主要的程序。也仅仅是工具。我们必须像熟悉乘法口诀一样去熟悉这些程序。
//----非常基础的一些东西,必须熟练。。。
#include<iostream> class link; using namespace std; class node{ friend class link; public: node():next(NULL){} node(int value):data(value),next(NULL){} private: int data; node *next; }; class link{ public: link(int x,int y,int z):n(x),s(y),m(z){} node *createlink() { node *p,*r; node *q; r=p=new node; for(int i=1;i<=n;++i) { q=new node; q->data=http://www.mamicode.com/i;"将要删除的号码是"<<p->data<<endl; delete p; p=q->next; } cout<<"留下来的人数的号码为"<<p->data<<endl; return p; } private: int n; int s; int m; }; int main() { int i,j,k; cout<<"输入总数,開始位置。每次循环人数"<<endl; cin>>i>>j>>k; link linklist(i,j,k); node *head=linklist.createlink(); node *lastnode=linklist.jusefu(head); system("pause"); return 0; }
用C++实现约瑟夫环的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。