poj 2960 S-Nim nim博弈grundy值计算法入门
来源:互联网 发布:澳洲足球甲级联赛数据 编辑:程序博客网 时间:2024/04/29 08:36
题意:
给k堆石子,两人轮流向某一堆中拿,拿的个数要从给定的一个集合中取,没石子拿的输,问先手必胜还是必败。
分析:
grundy值计算法的入门题。
代码:
//poj 2960//sep9#include <iostream>#include <set>using namespace std;int s[128];int grundy[10024];int maxx;int num;int get_grundy(int x){if(grundy[x]!=-1)return grundy[x];int tmp[10024];memset(tmp,0,sizeof(tmp));for(int i=0;i<num;++i)if(x-s[i]>=0)tmp[get_grundy(x-s[i])]=1;int t;for(t=0;;++t)if(tmp[t]==0)break;return grundy[x]=t;}int main(){while(scanf("%d",&num)==1&&num){int maxx=-1;for(int i=0;i<num;++i){scanf("%d",&s[i]);maxx=max(maxx,s[i]);}int t;memset(grundy,-1,sizeof(grundy));scanf("%d",&t);while(t--){int x,ans=0;scanf("%d",&x);while(x--){int d;scanf("%d",&d);ans=ans^get_grundy(d);}if(ans)printf("W");elseprintf("L");}puts("");}return 0;}
0 0
- poj 2960 S-Nim nim博弈grundy值计算法入门
- 【博弈】poj 2960 S-Nim
- POJ 2960 S-Nim(博弈)
- POJ Cutting Game(Nim博弈+grundy数)
- poj 2960 S-Nim Nim博弈变形 有限取法
- poj 2960,hdu 1536 S-NIM 博弈
- poj-2960 S-Nim (博弈SG)
- poj 2960 S-Nim(博弈,SG值)
- S-Nim Sprague-Grundy Therem
- POJ 2960 S-Nim
- POJ 2960 S-Nim
- [poj 2960]S-Nim
- poj 2960 S-Nim
- POJ 2960 S-Nim
- POJ 2975 Nim <Nim 博弈>
- HDU 1536 & POJ 2960 S-Nim(博弈 SG)
- poj 2311 Cutting Game nim与状态的grundy值
- hdu1536 S-Nim(博弈)
- mysql sql语句总结
- HKLM\SOFTWARE\Microsoft\WindowsCurrentVersion\Run里面的启动项不启动了
- 不可编写返回可变引用对象的访问器方法
- codeforces #311 C 557C. Arthur and Table(枚举+贪心)
- 织梦去掉后台验证码的方法
- poj 2960 S-Nim nim博弈grundy值计算法入门
- GetByteArrayElements和ReleaseByteArrayElements
- HTTP协议是无状态协议,怎么理解? session cookie
- 找出一堆数中最小的前K个数
- JQuery validate 的使用(使用ajax来提交数据)(ajax如何封装表单数据)
- 关键字 'with' 附近有语法错误。
- ceilometer 数据库(mongdb)
- left join,inner join,right join,cross join,full join的区别
- Eclipse使用技巧和方法