【贪心】取数游戏
时间限制: 1 Sec 内存限制: 64 MB题目描述
给出2n(n≤100)个自然数(小于等于30000)。将这2n个自然数排成一列,游戏双方A和B从中取数,只允许从两端取数。A先取,然后双方轮流取数。取完时,谁取得数字总和最大为取胜方;若双方和相等,属B胜。试问A方是否有必胜策略?
输入
共2行,第1行一个整数n;第2行有2*n个自然数。
输出
只有1行,若A有必胜策略,则输出“YES”,否则输出“NO”。
样例输入
4
7 9 3 6 4 2 5 3
样例输出
YES
思路:A先取一个数可以选择奇数的位置或者偶数的位置,如果取了奇数A就可以一直取奇数当A一直取奇数时B只能取偶数,如果取了偶数A就可以一直取偶数当A一直取偶数时B只能取奇数。
例如:7 9 3 6 4 2 5 3 A取第8个数B只能取第1或者7个数....
1 #include <iostream> 2 3 using namespace std; 4 int a; 5 int n; 6 int ji; 7 int ou; 8 int main() 9 { 10 while(cin>>n) 11 { 12 ji=ou=0; 13 for(int i=1;i<=2*n;i++) 14 { 15 cin>>a; 16 if(i%2==1) 17 ji+=a; 18 else 19 ou+=a; 20 } 21 if(ji!=ou) 22 cout<<"YES"<<endl; 23 else 24 cout<<"NO"<<endl; 25 } 26 return 0; 27 }