首页 > 编程语言 > 详细

【算法】 最近面试遇到的一道报数出队列的题

时间:2015-07-14 09:58:43      阅读:276      评论:0      收藏:0      [点我收藏+]

 题目 : 有n(正整数)个数排成一列,一个挨一个报数,当报的数能被x(x>0)整除时,移除该数,直到数列中只有一个数,求该数的一开始的位置

 解答

 public static int Demo(int n, int x)
        {
            if (n <= 0)
            {
                throw new Exception("n为正整数,请输入正确的数字");
            }
            if (x <= 0)
            {
                throw new Exception("x必须大于0,请输入正确的数字");
            }
            var queue = new Queue<int>();
            for (int i = 1; i <= n; i++)
            {
                queue.Enqueue(i);
            }
            var times = 1; // 这是报的数
            while (queue.Count >= 2)
            {
                var temp = queue.Dequeue();
                if (times % x != 0) //能被x整除的移除队列,不能整除的再加入队列
                {
                    queue.Enqueue(temp);
                }
                times++;
            }
            return queue.Dequeue();
        }

 

【算法】 最近面试遇到的一道报数出队列的题

原文:http://www.cnblogs.com/fzz2727551894/p/4644594.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!