题目描述
n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
输入格式
输入两个整数 n,m。
输出格式
输出一行 n 个整数,按顺序输出每个出圈人的编号。
输入输出样例
输入
10 3
输出
3 6 9 2 7 1 8 5 10 4
一.用结构体实现单向动态链表
#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
node *next;
};
int main(){
int n,m;
scanf("%d%d",&n,&m);
node *head,*p,*now,*prev;
head=new node;
head->data=1;
head->next=NULL;
//分配节点一,值为1
now=head;
for(int i=2;i<=n;i++){
p=new node;
p->data=i;
p->next=NULL;
now->next=p;
now=p;
}
now->next=head;//最后一个指向第一个
//建立链表
now=head,prev=head;
while((n--)>1){
for(int i=1;i<m;i++){
prev=now;
now=now->next;
}
printf("%d ",now->data);
prev-> next=now->ne

文章详细展示了如何用C++的不同数据结构(如结构体数组、链表)模拟环形计数游戏,以及数学方法来解决此问题,涉及节点操作和循环逻辑。
&spm=1001.2101.3001.5002&articleId=134900323&d=1&t=3&u=2a81beabc73e4c7dac1874225dfcfc6e)
263

被折叠的 条评论
为什么被折叠?



