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

    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 <iostream>
    
    using namespace std;
    
    int main()
    {
        int n,m,i,j,cont;
        int people[1000];
        cin>>n>>m;
        cont=n;
        for(i=1;i<=n;i++)
            people[i]=i;
        for(i=1,j=0;i<=n;i++)
        {
            if(people[i]!=0)
            {
                j++;
                if(j%m==0)
                {
                    people[i]=0;
                    cont--;
                }
            }
            if(i==n)
                i=0;
            if(cont==1)
                break;
        }
        for(i=1;i<=n;i++)
        {
            if(people[i]!=0)
                cout<<i<<endl;
        }
        
        return 0;
    }
    
    
    
    
    链表写法
    #include<stdio.h>  
    #include<stdlib.h>  
    struct node   
    {  
        int data;  
        struct node *next;  
    };  
    int main(void)  
    {  
        int i,m,n;  
        struct node *head,*tail,*p,*s,*t;  
        scanf("%d%d",&n,&m);  
        head=NULL;  
        tail=head;  
        for(i=1;i<=n;i++)  
        {  
            p=(struct node *)malloc(sizeof(struct node));  
            p->data=i;  
            if(head==NULL) head=p;  
            else tail->next=p;  
            tail=p;  
        }  
        tail->next=head;  
        t=head;  
        while(t!=t->next)   
        {  
            for(i=1;i<m;i++)  
            {  
                s=t;  
                t=t->next;  
            }  
            s->next=t->next;  
            free(t);  
            t=s->next;  
        }  
        printf("%d
    ",t->data);  
        return 0;  
    }  
    
  • 相关阅读:
    基本类型
    匿名对象和匿名方法
    定时任务@SChedule详解
    docker的配置和安装
    数据库的学习
    docker的学习
    nginx的学习
    yyyy-MM-dd HH:mm:ss.SS的大小写的含义
    单例模式的学习
    layer的学习
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/9454782.html
Copyright © 2011-2022 走看看