⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joseph.cpp

📁 时间复杂度为O(nlogn)的Joseph排列问题的计算程序。程序的运行时间与m无关。在一分钟之内可以计算n=10^6,m任意的Joseph排列问题.
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////
// 时间复杂度为O(nlogn)的Joseph排列问题
// 刘金义--辽宁石油化工大学工程软件研究所
// j_y_liu@sina.com
//////////////////////////////////////////////////////////////////////////
#include <stdio.h>

struct Node 
{
	int num;
	Node *prev, *next;
};

void Joseph(int n)
{
	Node *head = 0, *tail = 0;

	for(int i=1; i<=n; i++)
	{
		Node *newnode = new Node;
		newnode->num = i;
		newnode->prev = tail;
		if(tail)
			tail->next = newnode;
		tail = newnode;
		if(!head)
			head = newnode;
	}
	tail->next = head;
	head->prev = tail;
	Node *p = head->next->next;
	i = n;
	while(i>0)
	{
		printf("%d ", p->num);
		
		p->prev->next = p->next;
		p->next->prev = p->prev;
		Node *pnext = p->next;
		delete p;
		if(p!=pnext)
			p = pnext->next->next;

		i--;
	}
}

main()
{
	int n;
	printf("Input the number:");
	scanf("%d", &n);
	Joseph(n);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -