package\u0020package2;

import\u0020java.util.Scanner;

class\u0020Node { \u0020int\u0020data; \u0020Node\u0020next;

\u0020Node(int\u0020data)\u0020
{
	\u0020this.data\u0020=\u0020data;
}

}

public\u0020class\u0020JosephusProblem\u0020 { \u0020private\u0020static\u0020Scanner\u0020scanner; private\u0020static\u0020int\u0020p;

public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020
{
	\u0020scanner\u0020=\u0020new\u0020Scanner(System.in);
	System.out.print("请输入总人数n:");
	\u0020int\u0020n\u0020=\u0020scanner.nextInt();
	System.out.print("请输入报数m:");
	\u0020int\u0020m\u0020=\u0020scanner.nextInt();
	System.out.print("请输入最终剩余人数p:");
	setP(scanner.nextInt());

	\u0020Node\u0020head\u0020=\u0020createJosephusCircle(n);
	\u0020Node\u0020current\u0020=\u0020head;
	\u0020while\u0020(current.next\u0020!=\u0020current)
	{
		\u0020for\u0020(int\u0020i\u0020=\u00201;\u0020i\u0020<\u0020m\u0020-\u00201;\u0020i++)
		{
			\u0020current\u0020=\u0020current.next;
		}
		System.out.print(current.next.data\u0020+\u0020" ");
		current.next\u0020=\u0020current.next.next;
		current\u0020=\u0020current.next;
	}
	System.out.println(current.data);
}

private\u0020static\u0020Node\u0020createJosephusCircle(int\u0020n)\u0020
{
	\u0020Node\u0020head\u0020=\u0020new\u0020Node(1);
	\u0020Node\u0020current\u0020=\u0020head;
	\u0020for\u0020(int\u0020i\u0020=\u00202;\u0020i\u0020<=\u0020n;\u0020i++)\u0020
	{
		\u0020current.next\u0020=\u0020new\u0020Node(i);
		current\u0020=\u0020current.next;
	}
	current.next\u0020=\u0020head;
	return\u0020head;
}

public\u0020static\u0020int\u0020getP()\u0020
{
	\u0020return\u0020p;
}

public\u0020static\u0020void\u0020setP(int\u0020p)
{
	\u0020JosephusProblem.p\u0020=\u0020p;
}
Josephus 问题求解:Java 实现

原文地址: https://www.cveoy.top/t/topic/pqsT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录