码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-14 09:59:10      阅读:134      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!