华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 891|回复: 2
打印 上一主题 下一主题

P1996 约瑟夫问题

[复制链接]

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
跳转到指定楼层
楼主
发表于 2018-9-14 15:53:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目背景 约瑟夫是一个无聊的人!!!
题目描述  n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式

输入格式:n m
输出格式:出圈的编号

输入输出样例
输入样例#1:10 3
输出样例#1:3 6 9 2 7 1 8 5 10 4

说明m,n≤100
回复

使用道具 举报

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
沙发
 楼主| 发表于 2018-9-14 15:54:13 | 只看该作者
链表
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct point
  4. {
  5.     int data;
  6.     point *next;
  7. };
  8. int n,m;
  9. int main()
  10. {
  11.     cin>>n>>m;
  12.     if(n==0) return 0;
  13.     point *p,*q,*h;
  14.     q=h=new point;
  15.     for(int i=1;i<=n;i++)
  16.     {
  17.         p=new point;
  18.         p->data=i;
  19.         q->next=p;
  20.         q=p;
  21.     }
  22.     p->next=h->next;
  23.     p=h;
  24.     while(n>=1)
  25.     {
  26.         for(int i=1;i<m;i++)
  27.             p=p->next;
  28.         cout<<p->next->data<<" ";
  29.         p->next=p->next->next;
  30.         n--;
  31.     }
  32.     return 0;
  33. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
板凳
发表于 2018-9-15 23:05:22 | 只看该作者
楼上大神 好厉害,会用链表!指针呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 12:36 , Processed in 0.435871 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表