관리 메뉴

KorSA

JOSEPHUS 본문

Algorithm/Data Structures

JOSEPHUS

Praiv. 2019. 3. 18. 17:03
320x100
#include <iostream>
#include <list>

using namespace std;

int n = 0, k = 0;

void josephus(list<int> &survivors);

int main()
{
	int caseNum = 0;
	cin >> caseNum;
	
	for (int cIter = 0; cIter < caseNum; cIter++)
	{
		// Input
		cin >> n >> k;

		// Initalize
		list<int> survivors;
		for (int i = 1; i <= n; i++)
			survivors.push_back(i);

		// Process
		josephus(survivors);

		// Output
		for (auto s : survivors)
			cout << s << " ";
		cout << endl;
	}
}

void josephus(list<int> &survivors)
{
	auto kill = survivors.begin();

	while (n > 2)
	{
		kill = survivors.erase(kill);
		if (kill == survivors.end()) kill = survivors.begin();

		n--;
		
		for (int i = 0; i < k - 1; i++)
		{
			kill++;
			if (kill == survivors.end()) kill = survivors.begin();
		}
	}
}


JosephusInput.txt


JosephusOutput.txt


728x90
728x90

'Algorithm > Data Structures' 카테고리의 다른 글

ITES  (0) 2019.10.03
BRACKETS 2  (0) 2019.10.03
Comments