静态链表实现Josephus(约瑟夫环问题)

  • 问题描述


    假设n个竞赛者排成一个环形。给定一个正整数m<=n,从指定的第一个人开始,沿环计数,每遇到第m个人就让其出列,且计数继续进行下去。这个问题一直进行到所有人都出列为止,最后出列者为优胜者。

例如:(7,3)Josephus排列为3,6,2,7,5,1,4.

下面是代码:

#include 
#include
using namespace std;

//n个人围成一个圈,数到第m个人让其出列,最后一个人获胜。 
void Josephus(int n,int m) 
{
	int i,j,k;
	int *next = (int *)malloc(n*sizeof(int));
	//构造静态链表 
	for(i=0;i

 

运行结果:静态链表实现Josephus(约瑟夫环问题)_第1张图片

 

其实还可以用单向循环链表,这里就不再贴了。

你可能感兴趣的:(c语言算法)