1263: 分东西
Time Limit: 2 Sec Memory Limit: 20 MBSubmit: 86 Solved: 18
[ Submit][ Status][ Web Board]
Description
游戏中,一旦有人在比赛结束前退出游戏。剩下的人就可以支配离开者的物品。现在,玩家A离开游戏,留下了6种物品。玩家B和玩家C要分配玩家A的物品。假设玩家A的6种物品价值分别为1,2,3,4,5,6。已知玩家A的6种物品的数量,判断玩家B和玩家C是否能均分?
Input
每组数据包含6个正整数,分别代表6种物品的数量(不超过10000)。
Output
如果可以均分,输出“YES”;则输出“NO”。
Sample Input
1 0 1 2 0 0
1 0 0 0 1 1
Sample Output
NO
YES
【分析】
暴力模拟一下取物品就好了.....看能不能刚好拿到总物品的一半..能就yes不能就no没什么好讲的
【代码】
#include<iostream>
using namespace std;
int n[10];
int go;
bool flag;
void find(int value,int deep)
{
if(flag) return;
if(value==go)
{
flag=true;
return;
}
for(int i=deep;i>=1;i--)
if(n[i])
{
if(value+i<=go)
{
n[i]--;
find(value+i,i);
if(flag) break;
}
}
return;
}
int main()
{
int test=1;
while(cin>>n[1]>>n[2]>>n[3]>>n[4]>>n[5]>>n[6])
{
int sum=0;
for(int i=1;i<=6;i++) sum+=i*n[i];
if(sum%2)
{
cout<<"NO"<<endl;
continue;
}
go=sum/2;
flag=false;
find(0,6);
if(flag)
{
cout<<"YES"<<endl;
continue;
}
else
{
cout<<"NO"<<endl;
continue;
}
}
return 0;
}