2017EC Final L SOS——找规律&&博弈

题意

有n个格子排成一行,两人轮流填,可填入"S"或"0",先得到"SOS"的人胜;如果全部填完也没有出现"SOS",则为平局。请判断是先手胜、后手胜还有平局。

分析

第一次知道,博弈题也能打表找规律。

简单地说就是,给DFS一个返回值,返回三个不同的值分别代表先手胜、后手胜和平局。

枚举当前填的格子,如果出现后手出现必败态,先手胜,直接返回;如果后手出现平局,则存在平局;否则,后手败。

 (好像超内存了...问题不大

 不难得出结论:

n<7,平局

n >=7,

奇数,必胜

偶数,n<=14平局,n>14必败。

#include<bits/stdc++.h>
using namespace std;

int n;

int main()
{
    int T, kase = 0;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        printf("Case #%d: ", ++kase);
        if(n < 7)  printf("Draw
");
        else
        {
            if(n&1)  printf("Panda
");
            else
            {
                if(n <= 14)  printf("Draw
");
                else  printf("Sheep
");
            }
        }
    }
    return 0;
}

参考链接:

1. https://blog.csdn.net/a54665sdgf/article/details/82291977

2. https://blog.csdn.net/qq_36424540/article/details/82910289

原文地址:https://www.cnblogs.com/lfri/p/11623612.html