• POJ 2348 博弈


      这个题看了一上午,一直没头绪,撞了东南西北墙,终于在中午看了解题报告。恍然大悟!

      这个题的意思是这样的,只能从较大数中取较小数的倍数。到最后谁不能拿了,就视为失败。

      我开始想找到一个数字的规律来解题,后来发现不行,接着又想尝试递归来模拟拿的步骤来写,又被自己否定了,终于看了解题报告。恍然大雾,明白了决策与影响控制对手的节奏。如果a/b>=2,则有两种选择来控制对手的行动,1种是将状态变为{a>b&&a/b=1}另一种是{a<b}。这样对手在两种情况下均只能有一种选择,而结果也只有两种,所以具有选择权的就会控制比赛结果。 也许大家在担心,是不是这下控制住了,下次就变了呢?大家不用担心这个,因为你给对手的选择永远只有一个,如果还有别的选择依然由自己来控制!     还有要找出来谁会优先掌握控制权。这题,对我有很大启发。感觉到了博弈的精髓,不给对手留机会。。。

     1 #include <stdio.h>
     2 int main()
     3 {
     4     int a,b,t,count;
     5     while(scanf("%d%d",&a,&b)&&(a!=0||b!=0))
     6     {
     7         if(a<b)
     8         {
     9             t=a;a=b;b=t;
    10         }
    11         if(b==0)
    12         {
    13             printf("Ollie wins\n");
    14             continue;
    15         }
    16         else if(a%b==0)
    17         {
    18             printf("Stan wins\n");
    19             continue;
    20         }
    21         count=0;
    22         while(b!=0&&a/b==1)
    23         {
    24             count++;
    25             a=a-b;
    26             t=a;a=b;b=t;
    27         }
    28         if(count%2==0)
    29         {
    30             printf("Stan wins\n");
    31         }
    32         else if(count%2==1)
    33         {
    34             printf("Ollie wins\n");
    35         }
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    一些比较实用的小函数
    开发KOL程序 (1)
    开发KOL程序2
    使用mask来制作图像透明
    用U盘方便快捷安装系统
    Windows记忆专家
    Delphi开发桌面图标列表查看程序
    js压缩上传图片,转载
    js操作二进制数据
    mui扫码横屏全屏
  • 原文地址:https://www.cnblogs.com/symons1992/p/2849017.html
Copyright © 2020-2023  润新知