博弈之~取石子系列(三) nyoj 137-程序员宅基地

技术标签: 博弈  

取石子(三)

时间限制: 1000 ms  |  内存限制: 10000 KB
难度: 6
描述

小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。

游戏规则如下:共有N堆石子,已知每堆中石子的数量,两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),取过子之后,还可以将该堆石子中剩下的任意多个石子中随意选取几个放到其它的任意一堆或几堆上。等哪个人无法取子时就表示此人输掉了游戏。注意,一堆石子没有子之后,就不能再往此处放石子了。

假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量,请判断出小王能否获胜。

例如:如果最开始有4堆石子,石子个数分别为3 1 4 2,而小王想决定要先拿走第三堆石子中的两个石子(石子堆状态变为3 1 2 2),然后他可以使石子堆达到的状态有以下几种:

3 1 2 2(不再移动石子)

4 1 1 2(移动到第一堆一个)

3 2 1 2(移动到第二堆一个)

3 1 1 3(移动到第四堆一个)

5 1 0 2(全部移动到第一堆)

3 3 0 2(全部移动到第二堆)

3 1 0 4(全部移动到最后)

输入
可能有多组测试数据(测试数据组数不超过1000)
每组测试数据的第一行是一个整数,表示N(1<=N<=10)
第二行是N个整数分别表示该堆石子中石子的数量。(每堆石子数目不超过100)
当输入的N为0时,表示输入结束
输出
对于每组测试数据,输出Win表示小王可以获胜,输出Lose表示小王必然会败。
样例输入
3
2 1 3
2
1 1
0
样例输出
Win

Lose

解题思路:以后在写

代码如下:

#include<cstdio>  
#include<cstring>  
int main()  
{  
    int a[110],n,i,num,flag;  
    while(~scanf("%d",&n)&&n)  
    {  
        memset(a,0,sizeof(a));  
        for(i=0;i<n;++i)  
        {  
            scanf("%d",&num);  
            a[num]++;  
        }  
        flag=0;  
        for(i=0;i<101;++i)  
        {  
            if(a[i]&1)  
            {  
                flag=1;  
                break;  
            }  
        }  
        if(flag)  
           printf("Win\n");  
        else  
           printf("Lose\n");  
          
    }  
    return 0;  
}   


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wx2306/article/details/80195884

智能推荐

使用VMware虚拟机安装Red Hat Enterprise Linux8/9教程_red hat enterprise虚拟机-程序员宅基地

本篇文章将介绍使用VMware虚拟机安装Red Hat Enterprise Linux8/9,包教包会。_red hat enterprise虚拟机

Oracle数据库的导出_oracle导出表 数据量大影响正常使用吗-程序员宅基地

Oracle数据库导出的方式比较多,也各有优缺点,比较好的方案是使用r_man,但是显得大材小用,一般人也搞不定。我们这边数据量比较小,一般现场人员使用两种方式都出数据,发回研发中心进行分析数据。导出为Excel。导出为SQL脚本。但是这两种方式各有优缺点,Excel表在数据量比较小的情况下查看比较方便,但是倒回数据库比较麻烦。而使用SQL脚本,查看比较麻烦,但是导入到数据库中比较方便;一般我们建议现场的人员。导出SQL脚本给我们。但是最近遇到了SQL脚本执行不了的情况,具体原因是现场使用了_oracle导出表 数据量大影响正常使用吗

oracle如何导出所有表名,ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句..._渺小呆子的博客-程序员宅基地

--数据库导出表,字段名,长度,类型,字段注释,表注释语句SELECT T1.TABLE_NAME 英文表名,T1.COLUMN_NAME 字段名,T1.DATA_TYPE || '(' || T1.DATA_LENGTH || ')' 字段类型及长度,T2.COMMENTS 字段注释,t3.COMMENTS 表注释FROM USER_TAB_COLS T1, USER_COL_COMME..._oracle导出所有表名

C语言:统计文本文件单词数、段落数。_要求是:写一个c语言程序来统计一个多网页的大规模文本(.txt形式)的非停用单词(sto-程序员宅基地

题目描述:打开一个英文文本文件,假设文本文件单词之间全部用“空格”隔开,文本各段之间用“回车符”分开,统计输出文本的段数量,总单词数量,以及文本段的最长、最短、平均单词数量。test.txt 文本内容:随便百度的内容C语言代码:#include <stdio.h>#include <stdlib.h>#include <string.h>..._要求是:写一个c语言程序来统计一个多网页的大规模文本(.txt形式)的非停用单词(sto

机器学习在金融风控的经验总结!-程序员宅基地

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要14分钟跟随小博主,每天进步一丢丢干货作者:风浪-知乎,来源:NewBeeNLP由于金融风控场景的特殊性,很多算法同学在刚进入这..._金融风控设计及总结

今天学习filter函数,做课后题时发现一大神写的关于[::-1]的用法_filter函数怎么写 site:blog.csdn.net-程序员宅基地

今天做filter课后题遇到要求出1000以内所有的质数,在这题中巧用[::-1]def is_palindrome(n):return str(n) == str(n)[::-1]output = filter(is_palindrome, range(1, 1000))print(list(output))简直是厉害啊,一行代码搞定特此记录一下_filter函数怎么写 site:blog.csdn.net

随便推点

使用arduino拯救你的arduino开发板(含arduino拯救16u2/8u2的usbserial)_arduino编程器选哪个-程序员宅基地

在arduino开发过程中,我们可能会遇到主控烧坏需要重新更换MCU,或者是自己画基于arduino开发的主板需要自行烧录arduino的bootloader的时候。网上很多教程都会告知如何用可正常使用的arduino开发给丢bootloader的板子刷写bootloader,但是像mega2560、uno这类的板子usb转串口是使用16u2,8u2芯片模拟出来的usbserial,一旦该芯片固件_arduino编程器选哪个

QT根据参数绘制图形+重复绘制路径的简单方法(QT系列8)_qt paintevent画重复图形-程序员宅基地

介绍如何将LineEdit内的文本转化为int类型,并使用此内容动态绘制图形。介绍如何使用QPainterPath绘制重复的图形。_qt paintevent画重复图形

springboot 整合 gridfs 、webUploader实现大文件分块上传、断点续传、秒传_springboot gridfsinputfile-程序员宅基地

主要的pom.xml: &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;/dependency&gt;&lt;!--mongodb--&g_springboot gridfsinputfile

debian8 安装vnc4server并且设置开机自启动,并修改默认端口-程序员宅基地

安装方式大致都参看下面的文档debian安装vncserver但是在一步步跟着文档安装的过程中会出错,在执行service vncserver restart命令是会报错Unit vncserver.service failed to load: No such file or directory,这是由于/etc/init.d/下的vncserver脚本写得不完全正确,需要在第二行添加如下内容#...

Ubunt安装pydot和graphviz报错:Failed to import pydot. You must install pydot and graphviz for `pydotprint`_pygraphviz安装失败_猿代码_xiao的博客-程序员宅基地

Ubunt安装pydot和graphviz报错:Failed to import pydot. You must install pydot and graphviz for `pydotprint`_pygraphviz安装失败

apt-get 三个update相关的命令_apt-get update-程序员宅基地

apt-get update 更新软件源中的所有软件列表。 apt-get upgrade 更新软件。 apt-get dist-upgrade 更新系统版本。如果你对新版本软件的需求不是那么迫切,可以不执行..._apt-get update

推荐文章

热门文章

相关标签