标签:bsp 退出 class 第一个 大于 一个 算法 判断 dex
数三退一问题是,有一圈孩子,手拉手围成一个圈,从第一个孩子开始数1,第二个孩子数2,第三个孩子数3,这时候数3的孩子退出,从下一个孩子开始数1,一直循环,直到最后剩下一个孩子,问这个孩子的位置?
两种解题思路,一种是将这一组小孩看成一个数组(假设有500个数组),每个元素为boolean型,初始时所有的元素为true,然后开始循环数数,判断剩下元素是否大于1,首先判断元素是否为true,true则继续数,每次数到3时,记录剩下元素个数,同时将数字置零,以便从0开始重新数。
public class Count3Quit1{
public static void main(String[] args){
boolean[] kids;
kids = new boolean[500];
for(int i = 0; i <kids.length; i++){
kids[i] = true;
}
int leftNum = kids.length;
int countNum = 0;
int index = 0;
while(leftNum > 1){
if(kids[index]){
countNum++;
}
if(countNum==3){
kids[index] = false;
countNum = 0;
leftNum--;
}
index++;
if(indedx == 500){
index = 0;
}
}
for(int i = 0;i < kids.length; i++){
if(kids[i]){
System.out.println(i);
}
}
}
}
标签:bsp 退出 class 第一个 大于 一个 算法 判断 dex
原文地址:http://www.cnblogs.com/it-green-hand/p/7471955.html