• Lightoj 1020


    题目链接:

      1020 - A Childhood Game

    题目描述:

      Alice和Bob在玩弹珠游戏,两人轮流拿走弹珠,每次只能拿走一个或者两个,当Alice作为先手时谁拿走最后一个就是输家,而Bob作为先手时谁拿走最后一个就是赢家,问最后谁是赢家?

    解题思路:

      很基础的博弈题目,我们可以知道当Alice作为先手的时候:n=1(Alice lose),  n=2(Alice win),  n=3(Alice win),   n=4(Alice lose),   n=5(Alice win).

    从上面可以看出,因为每次可以取走一个或者两个,Alice肯定做出对自己有利的抉择,所以有a[n] = !(a[n-1] && a[n-2])(1为win,0为lose) 。

      对于Bob作为先手也是类似于上面的推到方法,a[n] = !(a[n-1] && a[n-2])。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main ()
     4 {
     5     long long n, t, l = 0;
     6     char str[10];
     7     scanf ("%lld", &t);
     8     while (t --)
     9     {
    10         scanf ("%lld %s", &n, str);
    11         if (!strcmp(str, "Bob"))
    12         {
    13             if (n %3  == 0)
    14                 printf ("Case %lld: Alice
    ", ++l);
    15             else
    16                 printf ("Case %lld: Bob
    ", ++l);
    17         }
    18         else
    19         {
    20             if (n % 3 == 1)
    21                 printf ("Case %lld: Bob
    ", ++l);
    22             else
    23                 printf ("Case %lld: Alice
    ", ++l);
    24         }
    25     }
    26     return 0;
    27 }

    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    图像处理笔记(十)
    图像处理笔记(九):频率域滤波
    图像处理笔记(八)
    图像处理笔记(七)
    图像处理笔记(六):灰度变换与空间滤波
    分布式
    关于python代码是编译执行还是解释执行
    python中的元类metaclass
    Python的函数参数传递
    递推思想
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4662633.html
Copyright © 2020-2023  润新知