约瑟夫问题,
1、 用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的n,m,编写程序求出所有人的出圈顺序。
import java.util.Scanner;
public class Yuesef {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("输入人数");
int n=sc.nextInt();
System.out.println("输入m");
int m=sc.nextInt();
yuesf(n,m);
}
static void yuesf(int n,int m)
{
int []a=new int[n];
int p=1;
int t=0;
while(true)
{
for(int x=0;x<a.length;x++)
{
if(a[x]==1)continue;
if(p==m)
{
a[x]=1;
p=0;
t++;
System.out.println(x);
}
p++;
}
if(t==a.length)
break;
}
}
}
原文:http://www.cnblogs.com/chslch/p/4869678.html