标签:博弈论sg函数入门
1 1 1 1 4 1 0 0 0
Fibo Nacci将这两个博客看看 sg函数应该差不多明白点了/* 看了半天博客,,迷迷糊糊,略懂,先上打表模板吧 Time:2014-8-24 23:14 */ #include<stdio.h> #include<string.h> const int MAX=1010; int f[MAX],sg[MAX],hash[MAX]; void Get_SG(int n){ memset(sg,0,sizeof(sg)); for(int i=1;i<=n;i++){ memset(hash,0,sizeof(hash)); for(int j=1;f[j]<=i;j++){//有i个石子,比i大的不用考虑 hash[ sg[ i-f[j] ] ]=1; } for(int j=0;j<=n;j++){//mex中未出现的最小非负整数 if(hash[j]==0){ sg[i]=j; break; } } } } void solve(){ f[0]=f[1]=1; for(int i=2;i<=16;i++)//f[15]=987 f[16]=1597到16就够了 f[i]=f[i-1]+f[i-2]; //printf("%d\n",f[16]); Get_SG(1001); int N,M,P; while(~scanf("%d%d%d",&M,&N,&P),M+N+P){ if((sg[M]^sg[N]^sg[P])==0) //位运算和任何运算符同时出现时记得一定要加括号 //郁闷…… printf("Nacci\n"); else printf("Fibo\n"); } } int main(){ solve(); return 0; }
杭电1848 Fibonacci again and again(博弈-打表)
标签:博弈论sg函数入门
原文地址:http://blog.csdn.net/u013634213/article/details/38802925