华师一附中OI组

标题: P1996 约瑟夫问题 [打印本页]

作者: universehyf    时间: 2018-9-14 15:53
标题: P1996 约瑟夫问题
题目背景 约瑟夫是一个无聊的人!!!
题目描述  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
作者: universehyf    时间: 2018-9-14 15:54
链表
  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. }
复制代码

作者: admin    时间: 2018-9-15 23:05
楼上大神 好厉害,会用链表!指针呢




欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2