下面的代码中,完成一个报名的功能
有n个人围成一圈,顺序排号,从第一人开始报名,从1到3报数,报到3的人退出圈,再从他的下一人重新报数,
问最后留下的是原来第几号的那位?
其中:小括号中有数字的就是需填写的代码,大家帮我看下,thankspublic 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;
}}
有n个人围成一圈,顺序排号,从第一人开始报名,从1到3报数,报到3的人退出圈,再从他的下一人重新报数,
问最后留下的是原来第几号的那位?
其中:小括号中有数字的就是需填写的代码,大家帮我看下,thankspublic 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;
}}
解决方案 »
- jsp中type=post和method=post什么区别?
- 关于Socket题,利用ObjectOutputStream发送给多个客户端的Vector,客户端接受的数据不一样? 这是怎么回事?
- 类中的方法存储在什么地方?
- 一个关于String类的问题?
- 我发现一个神奇的错误,请求高手指导
- BigDecimal类型判整除的问题,高手进来!
- checkbox单选,点击两次后怎么让不选中!?
- 关于 com.ms.com.Variant() ,救急!!!
- List<> 排序问题
- 《Thinking in Java》VS《The Java Programming Language》
- http认证返回的字符串提取问题
- 菜鸟求问:不处理子线程异常行不?
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;
}
}*/
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;
}
}
//我是这样写的,不知道还有没有其他更好的