jjzjj

C语言 | 约瑟夫问题(猴王争夺战)

约瑟夫问题(单向循环链表的使用)     约瑟夫问题有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。下面我们将用猴子争大王这一故事以及采用单向循环链表这一方法来进行讲解这一问题。    设编号为1,2,……n得n个猴子围坐一圈,约定编号为k(k大于等于1并且小于等于n),从1开始报数,数到m的猴子被淘汰。它的下一位继续从1开始报数,数到m的猴子被淘汰,依次类推,最后剩下一个为猴王。1、根据下图展示,初始化状态:假设n=6,总共有6个人,k=1,从第一个猴开始报数,m=5,每次数五个。2、第一次报数:从一号开始,数五个数,1-2-3-4