zoukankan      html  css  js  c++  java
  • 不敢死队问题 分类: 链表 2015-06-08 08:17 13人阅读 评论(0) 收藏

    不敢死队问题

    TimeLimit: 1000MS Memory limit: 65536K

    题目描述

    说到“敢死队”,大家不要以为我来介绍电影了,因为数据结构里真有这么道程序设计题目,原题如下:

    M个敢死队员要炸掉敌人的一个碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。

    这题本来就叫“敢死队”。“谁都不想去”,就这一句我觉得这个问题也只能叫“不敢死队问题”。今天大家就要完成这道不敢死队问题。我们假设排长是1号,按照上面介绍,从一号开始数,数到5的那名战士去执行任务,那么排长是第几个去执行任务的?

    输入

    输入包括多试数据,每行一个整数M0<=M<=10000)(敢死队人数),若M==0,输入结束,不做处理。

    输出

    输出一个整数n,代表排长是第n个去执行任务。

    示例输入

    9

    6

    223

    0

    示例输出

    2

    6

    132

    #include <bits/stdc++.h>
    #define RR freopen("input.txt","r",stdin)
    #define WW freopen("output.txt","w",stdout)
    using namespace std;
    const int mod=10007;
    struct node
    {
        int data;
        node *next;
    };
    int main()
    {
        int n;
        node *head,*p,*tail,*q;
        head=new node;
        head->next=NULL;
    
        while(cin>>n&&n)
        {
            tail=head;
            for(int i=1; i<=n; i++)
            {
                p=new node;
                p->next=NULL;
                p->data=i;
                tail->next=p;
                tail=p;
            }
            tail->next=head->next;
            int ans=1;
            q=head;
            p=head->next;
            int sum=0;
            while(1)
            {
                if(ans%5)
                {
                    p=p->next;
                    q=q->next;
                }
                else
                {
                    if(p->data==1)
                    {
                        break;
                    }
                    q->next=p->next;
                    free(p);
                    p=q->next;
                    sum++;
    
                }
                ans++;
            }
            cout<<++sum<<endl;
        }
        return 0;
    }
    
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    POJ 1426 Find The Multiple(数论——中国同余定理)
    POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
    POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
    POJ 3278 Catch That Cow(模板——BFS)
    HDU 1071 The area
    HDU 1213 How Many Tables(模板——并查集)
    POJ 1611 The Suspects
    light oj 1214 Large Division
    POJ 1258 Agri-Net(Prim算法求解MST)
    POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/juechen/p/4722057.html
Copyright © 2011-2022 走看看