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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李晓璐 黑马帝   /  2011-8-5 17:01  /  1884 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20个元素   从头开始数  每数到第13个   提取出来输出并删除  然后继续  数到第20个之后从头开始    如此循环  直到20个元素全部输出    这个问题怎么实现

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 绕晕了

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-8-5 18:11:56
沙发
递归,写个方法,弄个计数器,不好写。最好用面向对象思维,二十个小朋友手拉手,每个小朋友左右各拉着一个小朋友。有增删的方法

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 看不懂。

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-5 20:07:54
藤椅
这个问题我曾经也烦恼过,虎哥帮我解答了你可去看看他的解法,不过后来学到集合后我用集合写了算法代码希望对你有帮助[code=java]package com.sort;

import java.util.ArrayList;
import java.util.List;

public class Josephus {

        /**
         * 功能Josephus问题解答
         *
         * @param total总数
         * @param gap间隔数
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ArrayList<Integer> list = new ArrayList<Integer>();
                int total = 20;
                int gap = 13;
                // 编号
                for (int i = 1; i < 21; i++) {
                        list.add(i);
                }
                fun(list, gap);
        }

        public static void fun(List<Integer> list, int gap) {
                int index = 0;// 计算器用于记住数了多少个
                while (list.size() > 1) {
                        for (int i = 0; i < list.size(); i++) {
                                index++;
                                // 当数到gap时该元素被移除
                                if (index == gap) {
                                        System.out.println("第" + list.get(i) + "个被移除");
                                        list.remove(i);
                                        // 因为第i个被删除 掉了所以第i+1个上来顶了他的位置即变成了第i个,
                                        // 此时相当于已经数了一个所以index=1
                                        index = 1;
                                }
                        }
                }
                System.out.println("最后剩下" + list.get(0));
        }

}[/code]结果[code=java]第13个被移除
第6个被移除
第20个被移除
第14个被移除
第9个被移除
第5个被移除
第3个被移除
第2个被移除
第4个被移除
第8个被移除
第12个被移除
第18个被移除
第11个被移除
第7个被移除
第10个被移除
第17个被移除
第19个被移除
第16个被移除
第15个被移除
最后剩下1[/code]

评分

参与人数 1技术分 +3 收起 理由
老罗 + 3 强大

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马