zoukankan      html  css  js  c++  java
  • 洛谷 P1996 约瑟夫问题

    题目背景

    约瑟夫是一个无聊的人!!!

    题目描述

    n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.

    输入格式

    n m

    输出格式

    出圈的编号

    输入输出样例

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

    # include <cstdio>
    # include <iostream>
    using namespace std;
    struct node
    {
    int data;
    node *next;
    };
    int main()
    { int x,n,m,t=0;
    cin>>m>>n;//if(m==0&&n==0) break;
    node *head,*tail,*listnode;
    head=tail=NULL;//初始链表为空
    for(int i=1;i<=m;i++)
    { listnode=new node;//new为C++动态分配内存的运算符,分配一个结点
    listnode->data=i;//新结点数据域赋值
    listnode->next=head;//新结点指针域赋值

    if(head==NULL) head=tail=listnode;//链表为空,插入第一个结点
    else
    {
    tail->next=listnode;//在链表尾部插入新结点
    tail=listnode;//更新链表尾部指针
    }
    }

    if(head==NULL) return 0;//链表为空,不进行运算,结束程序
    listnode=head;
    while(listnode->next!=listnode)
    {
    for(int i=1;i<=n-2;i++)
    listnode=listnode->next;
    cout<<listnode->next->data<<' ';
    listnode->next=listnode->next->next;
    listnode=listnode->next;
    }

    cout<<listnode->data<<endl;

    return 0;
    }


    链表的模板题,熟悉如何建立链表,删除链表中的元素就可以了
  • 相关阅读:
    Linq语句jion on后指定多个条件
    sql判断日期是否为当前季度
    Linq to json
    .net压缩文件夹
    .net代码修改webconfig
    .net正则IP加端口,并返回IP加端口
    获取汉字拼音的首字母(获取助记码)
    .net获取程序根目录
    关闭IPV6
    mysql查看日志
  • 原文地址:https://www.cnblogs.com/xcsj/p/11961694.html
Copyright © 2011-2022 走看看