📄 homework6.java
字号:
import java.util.*;
public class homework6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
homework6 h6=new homework6();
Scanner s6=new Scanner(System.in);
int m,person; //m是初始值,person是人数
do
{
System.out.print("请输入m的初始值:");
m=s6.nextInt();
}while(m<1); //为了使输入有效
do
{
System.out.print("请输入人数:");
person=s6.nextInt();
}while(person<1); //为了使输入有效
int[] order=new int[person]; //用于存放最终返回的顺序编号数组
int[] psw=new int[person]; //纪录每个人的密码
for(int i=0;i<person;i++) //手工任意大于0的密码
{
do
{
System.out.print("请输入第"+(i+1)+"个人的密码:");
psw[i]=s6.nextInt();
}while(psw[i]<1);
}
order=h6.arr(m, psw); //调用arr方法,order接收返回数组
System.out.print("出列的顺序为:");//输出打印
for(int i=0;i<person;i++)
{
if(i!=person-1)
{
System.out.print(order[i]+"->");
}
else
{
System.out.print(order[i]);
}
}
}
public int[] arr(int M,int[] Psw)
{
int count=Psw.length; //由传入的Psw数组的长度确定游戏回合数
int temp,start=0; //temp纪录的是每回合,自起始人至结束人的增量
int[] ord=new int[count];//ord数组用于存放出列者的顺序
for(int i=0;i<count;i++)
{
temp=M%(count-i)-1; //计算每回合的增量
start=(start+temp)%Psw.length; //计算即将开始的回合的起点位置
while(Psw[start]==(-1)) //判断,当前位置是否已经出列
{
start=(start+1)%Psw.length; //若已经出列,位置向后移一位
} //直到该位置未出列为止
M=Psw[start]; //将密码赋予M
Psw[start]=(-1); //将当前位置,标记为已经出列
ord[i]=start+1; //将出列者的序号记录下来
start++; //将下一个位置作为下一轮的起始位
}
return ord;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -