【C#】找位置问题

【C#】找位置问题

  • 1 题目描述:找位置问题
  • 2 输入描述
  • 3 输出描述
  • 4 样例输入
  • 5 样例输出
  • 6 源码详解
  • 7 实现效果

1 题目描述:找位置问题

n 个人围成一圈, 并依次编号1~n。从编号为1 的人开始,按顺时针方向每隔一人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿。如果你想成为最后两个幸运儿,请问开始时应该站在什么位置?(设3<=n<=50)

【C#】找位置问题_第1张图片

2 输入描述

开始时的人数n

3 输出描述

第1 行是选出顺序,第2 行是两名幸运儿的开始位置(按升序排列),位置编号之间用一个空格分开。

4 样例输入

12

5 样例输出

2 4 6 8 10 12 3 7 11 5
1 9

6 源码详解

using System;

namespace Csharp2_3
{
     
    class Program
    {
     
        static void Main(string[] args)
        {
     
            int n;
            string n_str;
            Console.Write("请输入人数:");
            n_str = Console.ReadLine();
            n = Convert.ToInt32(n_str);
            int[] number = new int[n];
            for (int i = 0; i < number.Length; i++)
            {
     
                number[i] = i + 1;
            }

            while (number.Length > 2)
            {
     
                int[] number_out = new int[(number.Length + 1) / 2];
                int[] number_save = new int[(number.Length + 1) / 2];
                int index_out = 0, index_save = 0;
                for (int i = 0; i < number.Length; i++)
                {
     
                    if (i % 2 == 0)
                    {
     
                        number_save[index_save] = number[i];
                        index_save++;
                    }
                    else
                    {
     
                        number_out[index_out] = number[i];
                        index_out++;
                    }
                }
                for (int i = 0; i < number_out.Length; i++)
                {
     
                    if (number_out[i] != 0)
                    {
     
                        Console.Write(number_out[i] + " ");
                    }
                }
                number = number_save;
            }
            Console.WriteLine();
            for (int i = 0; i < number.Length; i++)
            {
     
                Console.Write(number[i] + " ");
            }
            Console.ReadLine();
        }
    }
}

7 实现效果

【C#】找位置问题_第2张图片

你可能感兴趣的:(Csharp,c#)