設有n個人依圍成一圈,從第1個人開始報數,數到第m個人出 列,然後從出列的下一個人開始報數,數到第m個人又出列,…,如此反覆到所 有的人全部出列為止。設n個人的編號分別為1,2,…,n,打印出出列的順
阿新 • • 發佈:2018-12-30
public class weichengquan{//設有n個人依圍成一圈,從第1個人開始報數,數到第m個人出
//列,然後從出列的下一個人開始報數;輸出出列的順序來
public void play(int num,int step){
int[] numS=new int[num];
int tep=0;//記錄步數;1<=tep<=step
int sd=0; //只有當sd等於陣列長度-1時,說明都出列完畢了,每次有出列的都會置零;
ff: //本題目的要點;在遍歷完一邊陣列後,tep是不置零的;
while(true){
if(sd==numS.length-1)//如果相等,說明出列完畢,跳出迴圈
break ff;
for(int i=0;i<numS.length;i++){
if(numS[i]!=1&&tep!=step){
tep++;
}else if(numS[i]==0&&tep==step){
System.out.println(i);
numS[i]=1;
tep=0;
sd=0;
}else
sd++;
}
}
}
public static void main(String[] args){
weichengquan fd=new weichengquan();
fd.play(20, 3);
}
}
//列,然後從出列的下一個人開始報數;輸出出列的順序來
public void play(int num,int step){
int[] numS=new int[num];
int tep=0;//記錄步數;1<=tep<=step
int sd=0; //只有當sd等於陣列長度-1時,說明都出列完畢了,每次有出列的都會置零;
ff: //本題目的要點;在遍歷完一邊陣列後,tep是不置零的;
while(true){
if(sd==numS.length-1)//如果相等,說明出列完畢,跳出迴圈
break ff;
for(int i=0;i<numS.length;i++){
if(numS[i]!=1&&tep!=step){
tep++;
}else if(numS[i]==0&&tep==step){
System.out.println(i);
numS[i]=1;
tep=0;
sd=0;
}else
sd++;
}
}
}
public static void main(String[] args){
weichengquan fd=new weichengquan();
fd.play(20, 3);
}
}