A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iq513394 中级黑马   /  2015-10-27 19:47  /  442 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一群小朋友围成一圈数数,数到3的那个小朋友退出圈,下一个接着重新数数。500个小朋友最后剩下的那一个是哪个小朋友。

  1. public static void main(String[] agrs) {
  2.                 //使用数组代表500孩子,true代表在圈里。
  3.                 boolean[] childs = new boolean[500];
  4.                 for(int i=0; i<childs.length; i++) {
  5.                         childs[i] = true;
  6.                 }
  7.                
  8.                 int leftCount = childs.length;//圈里还剩下几个孩子
  9.                 int count = 0;//数数计数器
  10.                 int index = 0;//下标
  11.                
  12.                 while(leftCount>1) {//只剩下1个时结束
  13.                         if(childs[index] == true) {//是否在圈里
  14.                                 count++;//数数
  15.                                 if(3 == count) {//数到3
  16.                                         count = 0;//重新开始计数
  17.                                         childs[index] = false;//这个孩子退出
  18.                                         leftCount--;//圈里剩下孩子减1
  19.                                 }
  20.                         }
  21.                         index++;//下一个
  22.                         if(index == childs.length) {//如果到了最后一个,再从0下标开始
  23.                                 index = 0;
  24.                         }
  25.                 }
  26.                 //循环找出最后一个孩子的下标
  27.                 for(int i=0; i<childs.length; i++) {
  28.                         if(childs[i] == true)
  29.                                 System.out.println(i);
  30.                 }
  31.         }
复制代码

点评

帅帅的  发表于 2015-10-30 22:47

7 个回复

倒序浏览
好高深,很强大

点评

谢谢支持{:5_284:}  发表于 2015-10-30 22:50
回复 使用道具 举报

谢谢支持
回复 使用道具 举报
大神 不错哦 带我飞带我︿( ̄︶ ̄)︽( ̄︶ ̄)︿飞.飞.飞.
回复 使用道具 举报
啊兴为梦想 发表于 2015-10-30 22:50
大神 不错哦 带我飞带我︿( ̄︶ ̄)︽( ̄︶ ̄)︿飞.飞.飞.

谢谢支持
回复 使用道具 举报
写的不错,支持下.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马