5.13(n)个人围成一圈,1、2、3、1、2、3 报数,报到3的出圈,请问最后一个出圈的人是原来的几号?留下的是原来的几号?

 

#region 解决方案一

            //思路:把所有的位置的值都标为1,,循环判断是3的倍数的位置的值标为2
            Console.WriteLine("请输入人数:");
            int number = int.Parse(Console.ReadLine());

            List<int> lastThree = new List<int>();
            int lastResult = 0;
            int[] intArr = new int[number];
            for (int i = 0; i < intArr.Length; i++)
            {
                intArr[i] = 1;
            }

            int index = 0;
            int length = intArr.Length;
            int last = -1;

            while (length > 1)
            {
                for (int i = 0; i < intArr.Length; i++)
                {
                    if (intArr[i] == 1)
                    {
                        index++;
                        if (index == 3)
                        {
                            if (length==2)
                            {
                                last = i;
                                length--;
                                break;
                            }
                            index = 0;
                            intArr[i] = 2;
                            length--;

                        }
                    }
                }
            }
            for (int i = 0; i < intArr.Length; i++)
            {
                if (intArr[i] == 1)
                {
                    lastResult = i;
                }
            }
            Console.WriteLine("最后一个出圈的人是原来的下标为{0}号,留下来的是原来的{1}号", last,lastResult);
            Console.ReadLine();
            #endregion

 

posted @ 2013-10-10 10:42  LifeForCodes  阅读(455)  评论(0编辑  收藏  举报