• 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级) I 小乐乐学博弈【大水题】


    题意概括:

    小乐乐和小皮蛋开始学习关于博弈的知识。
    给定两堆石子,第一堆有n个石子,第二堆有m个石子。
    每次操作可以从一堆石子中拿走一些石子,拿走石子的数量可以是1 - k个,小乐乐先手拿石子,然后依次轮流。
    假如到小乐乐的轮次,小乐乐拿不了了(也就是所有的石子都被拿光了),那么小皮蛋就获胜,反之亦然。
    假设小乐乐和小皮蛋都绝顶聪明,都会采用最佳的策略,请问最后谁会赢。

    输入:

    多组数据输入,对于每一组数据,只有一行由空格分开的三个整数n, m, k(0 <= n, m <= 1000000000, k >= |n - m|).

    输出:

    如果小乐乐会赢,输出"HAI YOU SEI!",否则输出"LAOZI CHUI SI NI!"。

    解题思路:

    因为题目给出了这个条件

    k >= |n - m|

    所以很明显,只要一开始 N M 都不为 0 ,那么先手就可以把 N M 调整为相等,之后无论后手拿多少个,先手的都可以在另一堆拿相同个,保持两堆相等。

    最后肯定是先手获得胜利。

    AC code:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <map>
     6 #include <algorithm>
     7 #define INF 0x3f3f3f3f
     8 #define LL long long
     9 using namespace std;
    10 
    11 int main()
    12 {
    13     int N, M, K;
    14     while(~scanf("%d%d%d", &N, &M, &K)){
    15         if(N == 0 && M == 0) puts("LAOZI CHUI SI NI!");
    16         else puts("HAI YOU SEI!");
    17     }
    18     return 0;
    19 }
  • 相关阅读:
    可复用的自定义Adapter
    SharedPreference工具类
    MD5工具类
    面试题
    策略模式
    java画图之初体验
    接口与事件之图形界面的认证登录
    “奥特曼“与”小怪兽”的继承者们之战
    “奥特曼攻打小怪兽”java学习打怪升级第一步
    使用智能指针管理对象资源
  • 原文地址:https://www.cnblogs.com/ymzjj/p/10052231.html
Copyright © 2020-2023  润新知