Grid POJ 2746 约瑟夫问题

比较经典的模拟题,注意对细节的考虑,以及对过程的模拟。

内存: 1848kB
时间: 16ms
语言: C++

// Grid 2746 Joseph
// Author: Tanky Woo
#include
#define MAX 301
int aLoop[MAX];
 
// www.wutianqi.com
int main()
{
	int n, m;
	int i;
	while(scanf("%d %d", &n, &m) && n && m)
	{
		for(i = 0; i < n; i++)
			aLoop[i] = i+1;
		int nPtr = 0;
		for(i = 0; i < n; i++)
		{
			int nCnt = 0;
			while(nCnt < m)
			{
				while(aLoop[nPtr] == 0)
					nPtr = (nPtr+1)%n;
				nCnt++;
				nPtr = (nPtr+1)%n;
			}
			nPtr--;
			if(nPtr < 0)
				nPtr = n-1;
			if(i == n-1)
				printf("%d\n", aLoop[nPtr]);
			aLoop[nPtr] = 0;
		}
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注