您的位置:首页 > 其它

UVA10404- Bachet's Game

2014-07-08 09:23 459 查看
题意:玩取石子游戏,最后一个取到石子的获胜。题目给出石子总量n,m中取法,每次都是Stan先取,然后求胜者

思路:记录剩余i个石子时的状态,Stan为1时是获胜,0时是失败。

<span style="font-size:14px;">#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int MAXN = 1000005;

int n, m; 
int dp[MAXN], arr[MAXN];

int main() {
    while (scanf("%d %d", &n, &m) != EOF) {
        for (int i = 0; i < m; i++)
            scanf("%d", &arr[i]);
        memset(dp, 0, sizeof(dp));
        for (int i = 0; i <= n; i++)
            for (int j = 0; j < m; j++) {
                if (i >= arr[j] && dp[i - arr[j]] == 0) {          
                    dp[i] = 1;  
                    break; 
                }
            } 
        if (dp
)
            printf("Stan wins\n");
        else
            printf("Ollie wins\n");
    }
    return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: