• 甲乙用同一串数字玩游戏


    甲乙用同一串数字玩游戏,一共15个,一开始这些数不是严格升序的,甲去掉一个数据,如果严格升序了,甲胜利,否则由乙继续去掉一个数据,如果严格升序了,乙胜利,否则再由甲删除数据,如此往复。通过15个初始数据,判断甲胜还是乙胜。

    #include<iostream>
    #include<list>
    
    using namespace std;
    
    bool sup(list<int> &l)//判断是否严格升序
    {
        if(l.size() == 1)
        {
            return true;
        }
        else
        {
            list<int>::iterator iter1,iter2;
            iter1 = l.begin();
            iter2 = l.begin();
            ++iter2;
            while(iter2!=l.end())
            {
                if(*iter1>=*iter2)
                {
                    return false;
                }
                ++iter1;
                ++iter2;
            }
            return true;
        }
    }
    
    bool func(list<int>l)
    {
        list<int>::iterator iter;
        for(iter=l.begin();iter!=l.end();)//去掉list中的任意一个,看能否严格升序
        {
            int temp = *iter;
            l.erase(iter++);
            if(sup(l))
            {
                return true;
            }
            l.insert(iter,temp);
        }
        for(iter=l.begin();iter!=l.end();)//去掉任意一个都无法严格升序,那么任意去掉一个,看乙能否胜利
        {
            int temp = *iter;
            l.erase(iter++);
            if(!func(l))//乙不能胜利,即甲胜利
            {
                return true;
            }
            l.insert(iter,temp);
        }
        return false;//所有情况下乙都能胜利
    }
    
    int main()
    {
        int buf[]={4,1,3,2,5};
        list<int>l;
        for(int i=0;i<sizeof(buf)/sizeof(int);i++)
        {
            l.push_back(buf[i]);
        }
        if(func(l))
        {
            cout<<"true"<<endl;
        }
        else
        {
            cout<<"false"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    升级python2.7, 实现python2.7与python3并存

    JDK一键部署, 新添加进度条
    银行分类概述
    个人银行结算账户类别
    银联刷卡POS机冲正
    银行怎样处理坏账和贷款展期
    数据加解密和数据签名验签
    一行三会/首批试点民营银行
    前端base64加密
  • 原文地址:https://www.cnblogs.com/johnsblog/p/3927629.html
Copyright © 2020-2023  润新知