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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何旭栋 中级黑马   /  2012-7-14 00:57  /  1689 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

网上看到一题目,挺好玩的,分享下,大家有兴趣练练
    15个红球和15个绿球排成一圈,从第1个球开始数,当数到第13个球时就拿出此球,然后再从下一个球开始数,当再数到第13个球时又取出此球,如此循环进行,直到仅剩15个球为止,问怎样排法才能使每次取出的球都是红球?

3 个回复

倒序浏览
  1. public class Demo {

  2.        
  3.         public static void main(String[] args) {
  4.                
  5.                 int[] nums =new int[30];
  6.         //初始所有位置为 0 ,一次查数 ,到 13 时 设为 1 表示为红球 取出 下一次不记录该位置
  7.                 //
  8.                 for(;;){
  9.                         int redNum=0;  //红球个数标记  找够15个跳出循环
  10.                          int count = 0; //球 标记  每 13 个 标记一次红球
  11.                         for(int k=0;;k++){
  12.                                
  13.                           if(nums[k%30]==0)count++;  //k %30  形成循环
  14.                           
  15.                           if(count==13){ //查够13 个球
  16.                                   nums[k%30]=1; // 第13 标记为红 取出
  17.                                   redNum++;    //红球个数 加1
  18.                                   count = 0;  //计数清零  开始下一轮
  19.                                   System.out.println("第 "+redNum+" 个取出红球位置  "+(k%30+1)); //打印红球位置,
  20.                                                                                          //也可取出放入一个数组,处理后输出
  21.                                   if(redNum==15)break;// 红球取完 结束 跳出循环
  22.                           }
  23.                 }
  24.                         break;
  25.         }

  26.   }
  27. }
复制代码
和以前一个翻牌的题很 象,用数组 模拟……详情如上

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
这是玩链表的经典练习题吧。。。。。用链表做其实挺简单的
回复 使用道具 举报
也可以使用JAVA工具类中的LinkedList来做这道题,这个类和链表类似。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马