.net c# 从总人数中,第N个位置,间隔N人开始出列算法

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

从第start人开始计数,以alter为单位循环记数出列,总人数为total

        public int[] Jose(int total, int start,int alter)
        {
            int j, k = 0;
            //count数组存储按出列顺序的数据,以当结果返回 
            int[] count = new int[total + 1];
            //s数组存储初始数据 
            int[] s = new int[total + 1];
            //对数组s赋初值,第一个人序号为0,第二人为1,依此下去
            for (int i = 0; i < total; i++)
            {
                s[i] = i;
            }
            //按出列次序依次存于数组count中 
            for (int i = total; i >= 2; i--)
            {
                start = (start + alter - 1) % i;
                if (start == 0)
                    start = i;
                count[k] = s[start];
                k++;
                for (j = start + 1; j <= i; j++)
                    s[j - 1] = s[j];
            }
            count[k] = s[1];
            //结果返回 
            return count;
        }

其中,total为总人数,n为第N个位置,m为每隔M人一个出列。

接下来,我们要使用一个循环结构来实现算法。由于我们需要从第n个位置开始,因此循环的初始值应该是(n-1)。而且,由于每隔m人一个出列,因此循环的步长应该是m。

public static void OutList(int total, int n, int m)
{
    int[] array = new int[total];
    for (int i = 0; i < total; i++)
      array[i] = i + 1;

    Console.WriteLine($"总人数:{total},第{m}个位置,每隔{m}人一个出列。");

    int index = n - 1;
    for (int i = 0; i < total - n + 1; i++)
    {
      Console.Write($"{array[index]}  ");
      array[index] = -1;
      int count = 0;
      while (count < m)
      {
        index = (index + 1) % total;
        if (array[index] != -1)
          count++;
      }
    }
    Console.ReadLine();
}


经过这样的操作,我们就可以得到想要的结果。

除此之外,我们还可以添加更多的调试信息来帮助我们更好的了解代码的运行情况。例如,在输出时,我们可以添加每个人的位置信息,这样可以更好的了解每个人在最终的出队顺序中的位置。

附件:下载该文件资源,减少时间成本(增值服务)
不商用,只限学习使用,使用后请删除
上传者拥有该资源完整版权,下载既表明已授权您可以进行报备商用,无报备或者使用后报备,视为侵权,报备后使用,为合法有效使用,报备方式,下载后,在下载列表,点击报备,填写使用场景即可
File Source
.rar
215.89 KB
文件部分展示图(单击放大)
.net c# 从总人数中,第N个位置,间隔N人开始出列算法.net c# 从总人数中,第N个位置,间隔N人开始出列算法
留言
该资源可下载
File Source
.rar
215.89 KB
.net c# 从总人数中,第N个位置,间隔N人开始出列算法.net c# 从总人数中,第N个位置,间隔N人开始出列算法
最新结算
HTML5 3D效果网页视频背景代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
软件概要设计说明书Word下载
类型: .docx 金额: CNY 0.38¥ 状态: 待结算 详细>
软件概要设计说明书Word下载
类型: .docx 金额: CNY 3.02¥ 状态: 待结算 详细>
.net c#获取声卡信息,声卡数量
类型: .rar 金额: CNY 30.96¥ 状态: 待结算 详细>
.net c#获取声卡信息,声卡数量
类型: .rar 金额: CNY 3.87¥ 状态: 待结算 详细>
.net c#获取电脑的安装软件列表信息,包含名称和版本号
类型: .rar 金额: CNY 30.96¥ 状态: 待结算 详细>
.net c#获取电脑的安装软件列表信息,包含名称和版本号
类型: .rar 金额: CNY 3.87¥ 状态: 待结算 详细>
.net c#获取电脑显示适配器信息
类型: .rar 金额: CNY 30.96¥ 状态: 待结算 详细>
.net c#获取电脑的安装软件列表信息,包含名称和版本号
类型: .rar 金额: CNY 3.87¥ 状态: 待结算 详细>
.net c#获取电脑的安装软件列表信息,包含名称和版本号
类型: .rar 金额: CNY 30.96¥ 状态: 待结算 详细>
各执行环节公正透明,帮助企业完成从赛制策划、活动推广、评委评选到版权转让等系列工作,专业、高效、值得信赖。平均每场赛事可征集到数百至数千组源码作品
合作伙伴
联系我们
  • 邮箱:raozetian@hotmail.com
Copyright 2023-2024 eeigg.com·皖ICP备2024038726号-1
打赏文章