您的位置:首页 > 其它

UVa 10404 - Bachet's Game

2014-05-26 21:37 549 查看
题目:有一堆石头,每次可以从里面取出集合M中的任意元素个,最后取走的赢,求输赢状态。

分析:dp、博弈。上一次对手输这一次就是自己赢。

说明:第1000次提交,第265题AC。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int F[1000001];
int T[11];

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