zoukankan      html  css  js  c++  java
  • 约瑟夫问题-sdut

    约瑟夫问题

    Time Limit: 1000MS Memory Limit: 65536KB

    Problem Description

    n个人想玩残酷的死亡游戏,游戏规则如下: 

    n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。

    请输出最后一个人的编号。

    Input

    输入n和m值。

    Output

    输出胜利者的编号。

    Example Input

    5 3

    Example Output

    4

    Hint

    第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀
     
     
    实验代码
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    typedef struct mod
    {
        int data;
        struct mod *next;
    }play;
    
    int main()
    {
        play *p, *q, *head;
        head=(play *)malloc(sizeof(play));
        head->data=1;
        q=head;
        int n,m, i,  k;
        scanf("%d%d",&n,&m);
        for(i=2;i<=n;i++)
        {
            p=(play *)malloc(sizeof(play));
            p->data=i;
            q->next=p;
            p->next=head;
            q=p;
        }
        p=p->next;
        k=1;
        while(n!=1)
        {
            if(k%m==0)
            {
                p=p->next;
                q->next=q->next->next;
                k=0;
                n--;
            }
            else
            {
                q=q->next;
                p=p->next;
            }
            k++;
        }
        printf("%d
    ",p->data);
        return 0;
    }
    
  • 相关阅读:
    newgrp
    netstat
    netlink, PF_NETLINK
    netdevice
    mv
    mplayer
    mpg123
    MOVE
    motd
    more
  • 原文地址:https://www.cnblogs.com/lxhax/p/6628971.html
Copyright © 2011-2022 走看看