吉首大学第九届"新星杯"大学生程序设计大赛 M.来来来 比比咱谁更聪明

吉首大学第九届"新星杯"大学生程序设计大赛 M.来来来 比比咱谁更聪明

题目描述

小j和小k一起玩一个简单的小游戏,有一个容量为n的瓶子,此外还有m个容量不等杯子,他们用杯子装满水轮流往瓶子中倒水,如果谁把杯子中的水不能完全倒入瓶子中,则算输,小j先开始往瓶中倒水,两个人都足够聪明,请问,小j能赢吗?
注意: 每一个杯子可以重复用多次

输入描述

输入要求:首先输入n表示瓶子的容量,接下来输入m表示杯子的数量,
接下来输入m个数表示杯子的容量k(0

输出描述

输出要求:如果能赢则输出Y,否则输出N。

示例1

输入

10 4
2 3 6 8

输出

N

因为n,m较小,故可以模拟整个过程,当n能恰好被填满或不能再装时赢,否则输,代码如下:

#include
using namespace std;
typedef long long ll;
const int N=1e3+5;

int main()
{
    int n,m,a[N],f[N];
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(n>=a[j] && !f[n-a[j]]) f[i]=1;
        }
    }
    printf("%c\n",f[n]?'Y':'N');
    return 0;
}

你可能感兴趣的:(博弈,牛客)