asuml

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【贪心】取数游戏

时间限制: 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 }

 

posted on 2016-07-21 15:54  asuml  阅读(449)  评论(0编辑  收藏  举报