黑马程序员技术交流社区
标题:
约瑟夫的数学题目
[打印本页]
作者:
何旭栋
时间:
2012-7-14 00:57
标题:
约瑟夫的数学题目
网上看到一题目,挺好玩的,分享下,大家有兴趣练练
15个红球和15个绿球排成一圈,从第1个球开始数,当数到第13个球时就拿出此球,然后再从下一个球开始数,当再数到第13个球时又取出此球,如此循环进行,直到仅剩15个球为止,问怎样排法才能使每次取出的球都是红球?
作者:
丁二跃
时间:
2012-7-14 01:41
public class Demo {
public static void main(String[] args) {
int[] nums =new int[30];
//初始所有位置为 0 ,一次查数 ,到 13 时 设为 1 表示为红球 取出 下一次不记录该位置
//
for(;;){
int redNum=0; //红球个数标记 找够15个跳出循环
int count = 0; //球 标记 每 13 个 标记一次红球
for(int k=0;;k++){
if(nums[k%30]==0)count++; //k %30 形成循环
if(count==13){ //查够13 个球
nums[k%30]=1; // 第13 标记为红 取出
redNum++; //红球个数 加1
count = 0; //计数清零 开始下一轮
System.out.println("第 "+redNum+" 个取出红球位置 "+(k%30+1)); //打印红球位置,
//也可取出放入一个数组,处理后输出
if(redNum==15)break;// 红球取完 结束 跳出循环
}
}
break;
}
}
}
复制代码
和以前一个翻牌的题很 象,用数组 模拟……详情如上
作者:
蒋映辉
时间:
2012-7-14 07:01
这是玩链表的经典练习题吧。。。。。用链表做其实挺简单的
作者:
韦念欣
时间:
2012-7-14 09:23
也可以使用JAVA工具类中的LinkedList来做这道题,这个类和链表类似。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2