题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1848

*如对Nim博弈不是很理解的请移步上篇博客http://blog.csdn.net/sm9sun/article/details/53229631

题目描述:

Fibonacci取石子

1、  这是一个二人游戏;
2、  一共有3堆石子,数量分别是m, n, p个;
3、  两人轮流走;
4、  每走一步可以选择任意一堆石子,然后取走f个;
5、  f只能是菲波那契数列中的元素(即每次只能取1,2,3,5,8…等数量);
6、  最先取光所有石子的人为胜者;

也就是说在Nim博弈的基础上,对取石子的个数加以限制。这里我们引入一个SG函数的概念

SG函数的百科说明:给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。

看起来有点抽象。实际上的意思就是 假如一个x,其f(x)=k,那么x的下一步操作,就是后继 可以满足0<=f(x->next)<k,当然其后继不可能等于k。

这就等同于Nim博弈里把k个石子变成0,1……k-1是一个道理

所以将这n枚棋子所在的顶点的SG值看作其n堆相应数量的石子,那么这个Nim游戏的每个必胜策略都对应于原来这n枚棋子的必胜策略

即又回到了Nim博弈

#include<stdio.h>
int f[16]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597};
//懒的写fib函数了= =!!!
int SG[1005]={0};
int E[1005];void f_sg()
{int i,j;int h[20];E[0]=0;E[1]=1;for(i=2;i<=1000;i++){ for(j=0;j<=15;j++)  {h[j]=0;}  for(j=0;f[j]<=i;j++) //SG值状态标记{  h[E[i-f[j]]]=1;}for(j=0;j<=15;j++)if(h[j]==0)     //最小SG值 {E[i]=j;break;}}
}int main()
{int m,n,p,x;f_sg();while(~scanf("%d%d%d",&m,&n,&p),(m||n||p)){x=E[m]^E[n]^E[p];if(x)printf("Fibo\n");elseprintf("Nacci\n");}return 0;
}
题目描述:先抛一个取石子问题:

博弈——NimSG函数函数(hdu1848)相关推荐

  1. jquery jQuery的入口函数 $函数 dom对象和jquery对象

    文章目录 jquery jQuery的入口函数 $函数 dom对象和jquery对象 jQuery的入口函数 视频 代码 $函数 视频 代码 dom对象和jquery对象 视频 代码 jquery j ...

  2. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  3. 函数函数sigaction、signal

    函数函数sigaction 1. 函数sigaction原型: int sigaction(int signum, const struct sigaction *act, struct sigact ...

  4. 浅析MATLAB中的内联函数、匿名函数和函数函数

    内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法.在命令窗口.程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像 ...

  5. python函数-函数进阶

    python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 -- python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...

  6. day20 Python 高阶函数,函数,嵌套,闭包 装饰器

    高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo():t ...

  7. 【C/C++】一个实例看 回调函数 / 函数指针 应用与原理

    前言:笔者在学习数据结构经典问题"四种方法求解最大子列和"时,遇到了一个需求:计时是重复动作,因此想创建一个可以为算法运行时间计时的函数.由于计时的特殊性(被计时的函数要被掐头又掐 ...

  8. matlab 中的内联函数、匿名函数和函数函数

    内联函数 >> f = inline('x^2 + y^3') f =内联函数:f(x,y) = x^2+y^3 >> f(2, 3) 31 其实 inline('x^2+y^ ...

  9. 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2

    写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2.要求当s1=s2 ...

  10. Dart —— 函数 函数参数 匿名函数

    Dart汇总请点击这里 函数 文章目录 函数 可选参数 命名可选参数 位置可选参数 默认参数值 main() 函数 函数是一等对象 匿名函数 返回值 Dart 是一门真正面向对象的语言, 甚至其中的函 ...

最新文章

  1. pandas读取文件
  2. 剑指offer:二位数组中的查找
  3. MyBatis(1):MyBatis入门
  4. PIC单片机精通_A/D模数转换模块细节补充
  5. vue 单选框样式_作为一位Vue工程师,这些开发技巧你都会吗?
  6. STM32与多台MS5803压力传感器I2C通讯
  7. Ext4文件系统修复
  8. 洛谷P1120【小木棍】(搜索+剪枝)
  9. android多线程实现计时器,方法一、使用Handler和Thread(线程)实现定时器
  10. 使用Sigar采系统信息
  11. 磁盘怎么删除分区,磁盘管理怎么删除分区
  12. Panda白话 - G1垃圾收集器
  13. 【浪漫程序员系列】情人节给女友写代码表达爱意,让她感动到哭
  14. Python七天快速入门——第一天
  15. Oracle中的各种NAME
  16. MySql存储IP地址(兼容ipv4和ipv6)
  17. 领英精灵安全吗?附LinkedIn领英开发客户的关键点
  18. Github标星 8K+,免费又好用的Redis客户端工具!
  19. CentOS-7-x86_64-DVD-1503-01.iso安装mysqlmysql-5.7.25-1.el7.x86_64.rpm-bundle.tar(亲测有效)
  20. linux网络udp和tcp

热门文章

  1. Html转快应用方法,卡片跳转快应用指定页面,如何点返回直接退出快应用回到卡片...
  2. LINUX内核下跑单片机按键,S3C2440下linux按键驱动编写及测试程序
  3. php 匹配多个字符串,php 字符串中是否包含指定字符串的多种方法
  4. 机器学习--逻辑斯谛回归(Logistic Regression)
  5. linux内核那些事之mmap_region流程梳理
  6. CMake中的ARGC ARGV 和ARGN参数意义
  7. CSDN-markdown编辑器的使用方法
  8. PS如何生成svg代码格式的path路径 - PS技巧篇
  9. python bokeh 示例_Python bokeh.plotting.figure.arc()用法及代码示例
  10. c盘清理代码_IntelliJ IDEA 缓存和索引介绍和清理方法(一)