首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个报数的小程序,有几行代码需完善

2013-07-09 
一个报数的小程序,有几行代码需完善,在线等下面的代码中,完成一个报名的功能 有n个人围成一圈,顺序排号,从

一个报数的小程序,有几行代码需完善,在线等
下面的代码中,完成一个报名的功能
 有n个人围成一圈,顺序排号,从第一人开始报名,从1到3报数,报到3的人退出圈,再从他的下一人重新报数,
 问最后留下的是原来第几号的那位?
其中:小括号中有数字的就是需填写的代码,大家帮我看下,thanks

public class Test {

public static void main(String[] args) {
int peo;
Scanner inp = new Scanner(System.in);
peo = inp.nextInt();
int k = Keeper(peo, 3);
System.out.println("留下的是" + k);

}
public static int Keeper(int peo,int n){
int k=0;
int[] array=new int[peo];
for(int i=1;i<peo;i++){
int j=1;
while(j<=n){
if((1)){
j--;
}
if(j==n){
(2)
}
j++;
(3)
}
}
for(k=0;k<peo;k++){
if(array[k]==0){
(4)
}
}
return k+1;
}

}
[解决办法]
约瑟夫问题。。。。。
[解决办法]
List<Integer> list = new ArrayList<Integer>();
for (int i = 6; i > 0; i--) {
list.add(i);
}
/*int p = 1;
while (p<=3) {
int count = 0;
for (int i = 0; i<list.size(); i++) {
if(p == 3&& list.get(i) != -1) { 
list.set(i, -1);
p = 1;
}
if (list.get(i) != -1) {
p++;
count ++;
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
if(count <= 1) {
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
break;
}
}*/
[解决办法]
public class Test{

public static void main(String[] args) {


int peo;
Scanner inp = new Scanner(System.in);
peo = inp.nextInt();
int k = Keeper(peo, 3);
System.out.println("留下的是" + k);

}

public static int Keeper(int peo, int n) {
int k = 0;  //记录数到第几个人
int[] array = new int[peo];
for (int i = 1; i < peo; i++) {  //需要数几次
int j = 1;
while (j <= n) {
if (array[k]!=0) {
j--;
}
if (j == n) {
array[k] = 1 ;   //出圈
}
j++;
k=++k>=peo?0:k ;
}
}
for (k = 0; k < peo; k++) {
if (array[k] == 0) {
break;
}
}
return k + 1;
}
}
//我是这样写的,不知道还有没有其他更好的

热点排行
Bad Request.