Josephus 问题求解:Java 实现
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;
}
原文地址: https://www.cveoy.top/t/topic/pqsT 著作权归作者所有。请勿转载和采集!