约瑟夫环问题

假设又m个人围成一圈,从第n个人开始报数m个,报到m的人出圈,输出每个人的出圈顺序。

class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            p.Print(9,2,5);
        }
        //allNum 总人数 startNum 开始数的位置 num 步长  
        public void Print(int allNum,int startNum,int num)
        {
            int temp = 0;
            //声明一个存放跳出来的人的数组
            int[] outPut = new int[allNum];
            //声明一个数组存放出圈的人以打印出圈顺序
            int[] arr = new int[allNum + 1];
            //添加人allNum个
            for (int i = 1; i <= allNum; i++)
            {
                arr[i] = i;
            }
            //遍历找到出圈的人,并将其放到数组的后边
            for (int i = allNum; i > 1; i--)
            {
                startNum = (startNum + num - 1) % i;
                if (startNum == 0)
                    startNum = allNum;
                outPut[temp] = arr[startNum];
                temp++;
                for (int j = startNum; j < i; j++)
                {
                    arr[j] = arr[j + 1];
                }
                outPut[temp] = arr[1];
            }

            for (int i = 0; i < allNum; i++)
            {
                Console.WriteLine("我是第" + outPut[i] + "个人,我是第" + (i + 1) + "个出圈的");
            }
        }
    }
主要逻辑在于找到出圈的人以及对出圈的人在原数组中的处理。

由于数组不能像List一样随意删除里面的元素,所以将已经出圈的人放到数组的后边,并且下次遍历时数组的长度减1。

outPut[temp] = arr[1];

数组中的第一个人必然是最后一个出圈的,当外层for循环完成时,将最后一个人添加进outPut数组中。

输出结果:


Tip:如果要删除数组中的元素的话,可以将其转换为List,删除元素后在转换成数组

 int[] arry = new int[3] { 1,2,3};
 ArrayList al = new ArrayList(arr);
 al.RemoveAt(1);
 arr = (int[])al.ToArray(typeof(int));
 Debug.Log(arr.Length);

一种基于有效视角点方法的相机位姿估计MATLAB实现方案 该算法通过建立三维空间点与二维图像点之间的几何对应关系,实现相机外部参数的精确求解。其核心原理在于将三维控制点表示为四个虚拟基点的加权组合,从而将非线性优化问题转化为线性方程组的求解过程。 具体实现步骤包含以下关键环节:首先对输入的三维世界坐标点进行归一化预处理,以提升数值计算的稳定性。随后构建包含四个虚拟基点的参考坐标系,并通过奇异值分解确定各三维点在该基坐标系下的齐次坐标表示。接下来建立二维图像点与三维基坐标之间的投影方程,形成线性约束系统。通过求解该线性系统获得虚拟基点在相机坐标系下的初步坐标估计。 在获得基础解后,需执行高斯-牛顿迭代优化以进一步提高估计精度。该过程通过最小化重投影误差来优化相机旋转矩阵和平移向量。最终输出包含完整的相机外参矩阵,其中旋转部分采用正交化处理确保满足旋转矩阵的约束条件。 该实现方案特别注重数值稳定性处理,包括适当的坐标缩放、矩阵条件数检测以及迭代收敛判断机制。算法能够有效处理噪声干扰下的位姿估计问题,为计算机视觉中的三维重建、目标跟踪等应用提供可靠的技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值