• 洛谷 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;
    }


    链表的模板题,熟悉如何建立链表,删除链表中的元素就可以了
  • 相关阅读:
    JavaScript 位运算总结&拾遗
    leetcode
    leetcode
    【位运算经典应用】 寻找那个唯一的数
    归并排序 JavaScript 实现
    【位运算经典应用】 求二进制逆序
    Odoo仪表盘详解
    Odoo启动运行参数(script运行参数,不是运行配置文件)
    Odoo中的self详解
    【Odoo 8开发教程】第二章:Odoo生产环境部署设置
  • 原文地址:https://www.cnblogs.com/xcsj/p/11961694.html
Copyright © 2020-2023  润新知