约莫瑟夫环算法(C#)约瑟夫环算法(C#),

眼前几乎龙遇到一个约瑟夫环算法的题目,因为马上时光紧,而且事先为从不点过这算法,也即从未尽追究。今天发日想起来是题材了,就研究了一晃,写了一样截代码,试了瞬间,结果应当是毋庸置疑的,记录转,以后用之早晚可找。下面一截摘自百度百科。

大概瑟夫环算法(C#),

眼前几龙遇到一个约瑟夫环算法的问题,因为马上时间紧,而且事先也从不接触了此算法,也就从不最追究。今天生日想起来是题材了,就钻研了一晃,写了平等截代码,试了瞬间,结果该是对的,记录转,以后用之下可以找。下面一段子摘自百度百科。

约瑟夫环(约瑟夫问题)是一个数学之动问题:已知n个人(以编号1,2,3…n分别表示)围以于同一摆圆桌周围。从编号为k的口开始报数,数到m的不得了人出列;他的生一个丁同时起1开头报数,数到m的那个人以出列;依此规律还下去,直到圆桌周围的人头一体出列。通常解决就看似问题常常我们拿号码从0~n-1,最后[1]
结果+1尽管为本来问题的消除。

脚贴一下片段代码,后面可以下载源码:

        private void DoWork()
        {
            //列表的角标,用于操作源数据列表中的数据
            int index = this.data.Start - 1;
            //计数,当计到Selected的值时,出列一个数,然后重新开始计数
            int count = 1;

            while (sourceList.Count > 0)
            {
                //更新进度条
                this.data.ProgressValue++;

                if (count % this.data.Selected == 0)
                {
                    resultList.Add(sourceList[index]);
                    sourceList.Remove(sourceList[index]);

                    this.ShowSourecData();
                    this.ShowResultData();

                    count = 1;
                }
                else
                {
                    count++;
                    index++;
                }

                //当循环完源数据列表中的所有数据时,重头开始再次循环
                if (index == sourceList.Count)
                    index = 0;

                //System.Threading.Thread.Sleep(2);
            }
        }        

图片 1

源代码下载

http://www.bkjia.com/C\_jc/1281121.htmlwww.bkjia.comtruehttp://www.bkjia.com/C\_jc/1281121.htmlTechArticle约瑟夫环算法(C\#),
前几上遇到一个约瑟夫环算法的题材,因为当时工夫紧,而且前也尚未接触了是算法,也尽管从不最追究。今天有时…

约瑟夫环(约瑟夫问题)是一个数学之用问题:已知n个人(以编号1,2,3…n分别代表)围以在同等摆圆桌周围。从编号为k的丁起报数,数到m的充分人出列;他的生一个总人口同时于1始发报数,数到m的那么个人而出列;依此规律还下去,直到圆桌周围的人头满出列。通常解决就好像题材时我们拿号码从0~n-1,最后[1]
结果+1尽管为原本问题之败。

下贴一下片段代码,后面可以下载源码:

        private void DoWork()
        {
            //列表的角标,用于操作源数据列表中的数据
            int index = this.data.Start - 1;
            //计数,当计到Selected的值时,出列一个数,然后重新开始计数
            int count = 1;

            while (sourceList.Count > 0)
            {
                //更新进度条
                this.data.ProgressValue++;

                if (count % this.data.Selected == 0)
                {
                    resultList.Add(sourceList[index]);
                    sourceList.Remove(sourceList[index]);

                    this.ShowSourecData();
                    this.ShowResultData();

                    count = 1;
                }
                else
                {
                    count++;
                    index++;
                }

                //当循环完源数据列表中的所有数据时,重头开始再次循环
                if (index == sourceList.Count)
                    index = 0;

                //System.Threading.Thread.Sleep(2);
            }
        }        

图片 2

源代码下载

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注