uva 10404

dp   1表示先手赢  

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int num[20];
int f[1000007];
int main()
{
    int n;
    while(scanf("%d",&n) == 1)
    {
        int m;
        scanf("%d",&m);
        memset(f, 0, sizeof(f));
        for(int i = 0; i < m; i++)
        {
            scanf("%d",&num[i]);
        }
        for(int i = 0; i <= n; i++)
        {
            for(int k = 0; k < m; k++)
            {
                if(i - num[k] >= 0 && !f[i-num[k]])
                {
                    f[i] = 1;
                    break;
                }
            }
        }
        if(f[n])
            puts("Stan wins");
        else
            puts("Ollie wins");
    }
    return 0;
}


posted @ 2013-07-30 15:28  xlc2845  阅读(97)  评论(0)    收藏  举报