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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邬jerry 中级黑马   /  2015-10-11 17:18  /  1299 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20个人站成一圈,编号0~19,从编号0开始报数1.....,遇到3的倍数的就剔除去,循环报数,最后剩一个人,他的编号是多少号?程序如何实现,话说3个小时内能做出来比较适合程序员?

5 个回复

正序浏览
楼上都是大神啊!膜拜!
回复 使用道具 举报
好吧得用递归才行。我想了好久FOr循环好像不行
  1. package day2;

  2. import java.util.ArrayList;

  3. public class test123 {
  4.        
  5. public static void main(String[] args) {
  6.         int a = 20;
  7.         int b = 3;
  8.         System.out.println(ysf(a,b));
  9.         }
  10.         static int ysf(int a,int b){
  11.                 if(a==1)
  12.                 {
  13.                         return 0;
  14.                 }
  15.                 System.out.println( (ysf(a-1,b) +b) % a);
  16.                         return (ysf(a-1,b) +b) % a;
  17.                 }
  18. }
复制代码
回复 使用道具 举报
  1.         public static void main(String[] args) {
  2.                 int k=3;//k的倍数淘汰
  3.                 ArrayList<Integer> datas = new ArrayList<Integer>();
  4.                 datas.add(1);
  5.                 datas.add(2);
  6.                 datas.add(3);
  7.                 datas.add(4);
  8.                 datas.add(5);
  9.                 datas.add(6);
  10.                 datas.add(7);
  11.                 datas.add(8);
  12.                 datas.add(9);
  13.                 datas.add(10);//10个人,可自行添加,最好用数组初始化,再转成链表,这里就不做了!
  14.                 int count =1;//报的数
  15.                 while(datas.size()!=1){//只有一个元素,退出
  16.                         for (int i = 0; i < datas.size(); i++) {
  17.                                 if(count%3==0){
  18.                                         datas.remove(i);
  19.                                         i--;//删除,元素向前移了
  20.                                 }
  21.                                 count ++;
  22.                         }
  23.                 }
  24.                 System.out.println("剩下的号数是:"+datas.get(0));
  25.         }
复制代码


回复 使用道具 举报
定义一个数组,for 循环就可以了,满足条件就从数组里删除它
回复 使用道具 举报
这不是数组吗?循环,判断(i%3==0)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马