• 36。 龙舟比赛


    /*
         龙舟比赛,这题每次把胜者的编号保存下来,然后对他们进行比较,知道只剩1个胜者
     */
    
    #include<iostream>
    using namespace std;
    
    int w[6][6] = {   
            0,1,2,3,0,0,   
            1,1,2,1,1,1,   
            2,2,2,2,2,2,   
            3,1,2,3,3,3,   
            0,1,2,3,4,5   
        };   
    
    int order[6]={1,3,4,2,0,5};
    int result[6]={-1};
    
    void play(int n)
    {
        /*
             首先声明1个order副数组
             假如n=偶数,那么比较1此只有n/2个人留下
             n=奇数,比较一次有(n+1)/2个人留下,我们用order_fu来保存留下的人
             n=1的时候,就是剩的人了,没人比较的话就是胜利
            */
        int *order_fu=new int[n];
        int i,j,count;
        int cc=n;    
        while(n!=1)
        {
            j=0;
            count=n;
            for(i=0;i<n;i+=2)
            {
                if(i+1<n)// n双
                {
                    if(w[order[i]][order[i+1]]==order[i])
                    {
                        order_fu[j++]=order[i];
                        result[order[i+1]]=count--;
                    }
                    else
                    {
                        order_fu[j++]=order[i+1];
                        result[order[i]]=count--;
                    }
                }
                else //
                {
                    order_fu[j++]=order[i];
                }
            }
    
            //再复制给order
            if(n%2==0)
                n=n/2;
            else
                n=(n+1)/2;
            for(i=0;i<n;i++)
                order[i]=order_fu[i];
        }
        
        result[order_fu[0]]=1;
        //输出result
        for(i=0;i<cc;i++)
            cout<<i+1<<":"<<result[i]<<endl;
        cout<<endl;
    
        delete []order_fu;
    }
    
    int main(void)
    {
        play(6);
    }
  • 相关阅读:
    cogs 1272. [AHOI2009] 行星序列
    1027. 打印沙漏(20)
    1026. 程序运行时间(15)
    1023. 组个最小数 (20)
    《C语言程序设计(第四版)》阅读心得(四 文件操作)
    1022. D进制的A+B (20)
    1021. 个位数统计 (15)
    1020. 月饼 (25)
    1015. 德才论 (25)
    1009. 说反话 (20)
  • 原文地址:https://www.cnblogs.com/buxianghe/p/3270329.html
Copyright © 2020-2023  润新知