N个人围成一圈从第一个人开始报数数到M的人出圈;再由下一个人开始报数数到M的人出圈;…输出依次出圈的人的编号。
解题思路:
本题可以用循环链表来模拟,每次数到M的人出圈,直到只剩下一个人为止。
具体实现:
使用一个循环链表来模拟这个过程,链表中的每个节点表示一个人,节点中保存着该人的编号和下一个节点的指针。初始时,所有人的编号依次为1到N,链表中的节点依次为1到N。
从第一个人开始报数,数到M的人出圈,可以通过循环链表中的遍历实现。每次遍历到第M个节点时,将该节点从链表中删除,即将前一个节点的指针指向后一个节点。同时,将该节点的编号保存到一个数组中,表示该人已出圈。当只剩下一个节点时,输出保存出圈人员编号的数组即可。
代码如下:
原文地址: https://www.cveoy.top/t/topic/bO5d 著作权归作者所有。请勿转载和采集!