博弈的dfs

題目:ios

連接:https://ac.nowcoder.com/acm/contest/283/D
來源:牛客網

ide

小西買了一堆肥宅快樂水和肥宅快樂茶,準備和室友比誰更肥宅。
快樂水有A瓶,快樂茶B瓶。
小西和室友的規則是這樣的:
1. 小西先手,輪流到每一個人的回合,每一個回合只能喝剩餘數量較多的飲料
2. 知足規則1的同時,每次只能喝另外一種飲料剩餘數量的正整數倍
3. 知足一、2的同時,不能超額喝飲料,也就是說剩下2瓶的時候不能喝大於2瓶的數量。
4. 每一個人在本身的回合若是能喝完剩下的其中一種飲料,那麼就得到勝利。
例如A=10,B=2。
小西只能喝快樂水,且只能喝2/4/6/8/10瓶快樂水。小西能夠喝10瓶快樂水直接得到勝利。

小西和室友都是肥宅,因此他們都會才採起爲了勝利最優的行動。
如今請你判斷小西是否能贏得勝利。
代碼:
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<math.h>
typedef long long LL;
using namespace std;
int dfs(LL n,LL m,int a)
{
    if(n<m)
    {
        LL temp;
        temp=n,n=m,m=temp;
    }
    if(n%m==0)
    {
        return a;
    }
    if(n/m>=2)
        return a;
    else
    {
        return dfs(n-(n/m)*m,m,-a);
    }
}
int main()
{
    LL n,m;
    int t;
    cin>>t;
    while(t--)
    {
         cin>>n>>m;
    int l=dfs(n,m,1);
    if(l==1)
        printf("wula\n");
    else
        printf("mmp\n");
    }

}
View Code
相關文章
相關標籤/搜索