巴什博弈的类型题求解

img

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <iostream>
using namespace std;
void dl(int m,int a,int b);
int main()
{
    int n, m, a, b;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> m >> a >> b;
        dl(m, a, b);
    }
    return 0;
}

void dl(int m,int a,int b)
{
    int t = -1; //1为HX,-1为YY;
    for (int i = 1; i <= m;)
    {
        if (m == 1)
        {
            cout << "No" << endl;
            return;
        }
        else
        {
            t *= -1;
            //cout<<"t="<<t<<endl;
            if (t == 1)
            {
                for (int j = 1; j <= a; j++)
                {
                    if ((i + j) == m)
                    {
                        cout << "Yes" << endl;
                        return;
                    }
                    if (j == a)
                    {
                        i += 1;
                    }
                }
            }
            if (t == -1)
            {
                for (int j = 1; j <= b; j++)
                {
                    if ((i + j) == m)
                    {
                        cout << "No" << endl;
                        return;
                    }
                    if (j == b)
                    {
                        i += 1;
                    }
                }
            }
        }
    }
}

img