黑马程序员技术交流社区
标题:
求教这个题怎么解,不会处理循环1,2,3报数
[打印本页]
作者:
rimfwfn
时间:
2017-9-2 13:38
标题:
求教这个题怎么解,不会处理循环1,2,3报数
有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
圈子,直到只剩下一个人时停止报数,问剩下的人是原来的第几号悼
* n 从键盘输入,但不能小于 20.
作者:
Oliverwqcwrw
时间:
2017-9-4 09:36
这个在官网java基础班的视频当中有,讲解很详细
作者:
仙锄
时间:
2017-11-27 00:35
留位置等大神解答
作者:
sunyiran
时间:
2017-12-3 15:36
难在数字逻辑,当时我也用了半个小时才解决
作者:
sunyiran
时间:
2017-12-3 17:41
public class T1 {
public static void main(String[] args) {
System.out.println(T1.getLast(2));
}
//定义解决方案
public static int getLast(int n) {
int arr[] = new int[n];//将n个人的当前状态存入数组,0为存在(默认),1为退出
int count = 0;//当前计数
int sum = 0;//当前退出人数
while(true) {
for (int i = 0; i < arr.length; i++) {
if(arr[i] == 0) {//如果当前对象存在,则进行报数
if((n-sum) == 1)
return i+1;//只剩下1人时,退出方法,并返回当前对象的号数
if(count < 2) {
count++; //如果报数小于3,则计数加1
}else{
count = 0;//如果报数为3,则重新计数
arr[i] = 1; //同时设定当前对象退出
sum++;//退出人数加1
}
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2