设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
int a=sr.nextInt();
int c=sr.nextInt();
int sz[]=new int [a];
for(int d=0;d<a;d++)
{
sz[d]=d+1;
}
int pd=a;
int pd2=1;
for(;;)
{
for(int d=0;d<a;d++)
{
if(sz[d]==0)
{
continue;
}
if(pd2==c)
{
pd--;
if(pd==0)
{
System.out.println(sz[d]);
return;
}
sz[d]=0;
pd2=0;
}
pd2++;
}
}
}
}
本文探讨了约瑟夫环问题的实现,通过Java代码展示了如何处理一组按顺时针方向编号的人,从第1个人开始进行1到m的报数,报数到第m个人时此人出圈,然后继续报数,直到只剩下最后一个人。
262

被折叠的 条评论
为什么被折叠?



