zoukankan      html  css  js  c++  java
  • 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 }

    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    DP(第三版(较简单))
    【テンプレート】洛谷
    【説明する】并查集
    第一篇博文
    cogs 2398 切糕 最小割
    cogs 1873 happiness 最大权闭合子图
    cogs 1274 最小截断 最小割唯一判定
    cogs 736 星际转移 最大流
    cogs 329 K-联赛 最大流
    cogs 2605 寒假ing
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4662633.html
Copyright © 2011-2022 走看看