POJ 1740 A New Stone Game 博弈,规律
来源:互联网 发布:卡巴斯基软件和nod软件 编辑:程序博客网 时间:2024/04/30 00:59
题目链接:这里
题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。
解法:算规律题吧。。来自网上大神的一段分析。
首先看两堆:1 1 的状态肯定是先手输~~但是俩数不一样的话就是先手赢了。。再看三堆:1 1 1的状态肯定是先手赢,1 2 1也是先手赢。。。1 2 2也是先手赢。。总之都是先手赢。。再看四堆:1 1 2 2 这样的肯定是先手输。。1 1 2 3 这样的就是先手赢了。。。1 2 3 4是先手赢。。再看五堆:1 1 1 1 1 是先手赢。。1 1 1 1 2 先手赢。。。。…………都是先手赢。。1 2 3 4 1 也是先手赢。。。。各种先手赢。。由上我们可以得出结论。。。堆的个数为奇数的情况下。。各种先手赢。总是先手赢。。。堆的数目为偶数的情况下。。如果当前各个堆的石头数目能够对称。。也就是说。。把石头数目排序之后。。第1、2堆数量相等。。3、4堆数量相等,5、6堆数量相等………………这样的情况下。。先手必输。。其他情况都是先手赢。。。
//POJ 1740#include <stdio.h>#include <string.h>#include <algorithm>int a[11], num[110];int main(){ int n; while(scanf("%d", &n) != EOF && n) { memset(num, 0, sizeof(num)); for(int i = 1; i <= n; i++){ scanf("%d", &a[i]); num[a[i]]++; } int cnt = 0; for(int i = 1; i <= 100; i++) if(num[i]%2==1) cnt++; puts(cnt?"1":"0"); } return 0;}
0 0
- POJ 1740 A New Stone Game 博弈,规律
- poj 1740 A New Stone Game( 博弈)
- poj 1740 A New Stone Game(博弈)
- poj 1740 A New Stone Game(博弈)
- poj 1740 A New Stone Game 博弈
- POJ 1740 A New Stone Game【博弈】
- POJ 1740 A New Stone Game(博弈)
- [POJ](1740)A New Stone Game --找规律博弈(博弈)
- 博弈 POJ A New Stone Game
- POJ 1740 A New Stone Game (总结发现规律)
- POJ 1740 A New Stone Game (博弈)
- poj 1740 A New Stone Game(博弈)
- POJ 题目1740 A New Stone Game(博弈)
- POJ 1740 A New Stone Game
- POJ 1740 A New Stone Game
- POJ 1740 A New Stone Game
- poj 1740 A New Stone Game
- poj-1740 A New Stone Game 博弈论
- Http协议与TCP协议简单理解
- ScrollView嵌套ListView滚动冲突的解决方案
- 算法训练 表达式计算
- Git(码云-开源中国)入门小知识
- 移植u-boot到GEC210
- POJ 1740 A New Stone Game 博弈,规律
- iOS原生控件扫描二维码
- 数据库笔试题(答案)
- java再复习-ThreadLocal的使用
- 【HDU 1466 计算直线的交点数】+ dp
- 降低指定进程的CPU占用率(适合游戏多开)
- easyUI(2) UI组件的加载方式
- angular自定义指令(全选和单选)
- (动态规划问题)机器人走方格