首页 > 代码库 > 用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;>

用C++实现约瑟夫环的问题