【C#】找位置问题

   日期:2021-03-11     浏览:95    评论:0    
核心提示:【C#】找位置问题1 题目描述:找位置问题2 输入描述3 输出描述4 样例输入5 样例输出6 源码详解7 实现效果1 题目描述:找位置问题n 个人围成一圈, 并依次编号1~n。从编号为1 的人开始,按顺时针方向每隔一人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿。如果你想成为最后两个幸运儿,请问开始时应该站在什么位置?(设3<=n<=50)2 输入描述开始时的人数n3 输出描述第1 行是选出顺序,第2 行是两名幸运儿的开始位置(按升序排列)

【C#】找位置问题

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

1 题目描述:找位置问题

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

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 实现效果

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服