HDU2060 Snooker(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2060
分析:
这题目长的吓死我了,还好忍着看完题目。大致意思就是桌上由7种球,分为红球和其它球,红球可以有多个,其他求各颜色只能有一个。游戏规则是必须先把红球打进洞,然后才由一次机会打其他的球,红球进洞后再也没有机会出来,而其他球进洞后只要桌上还有红球,就可以出洞。红球1分,其他球分别为 2 3 4 5 6 7 分。给出当前桌子上球的个数,自己得分,对手得分,问是否还有机会赢球。
解题思路就是每次打一个红球,然后打一个七分,如果没有红球就从 7 6 5 4 3 2这样的顺序打下去,一直到桌子上没有球。
code:
#include <cstdio>
using namespace std;
int ball[10] = {0};
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
int b, p ,o; // 剩余球的数量,自己得分,对手得分
scanf("%d %d %d", &b, &p, &o);
if(b >= 7)
{
p += (b-6) + (b-6) * 7;
for(int i=2; i<=7; i++)
p += i;
}
else if(b < 7)
{
for(int i=7; i>7-b; i--)
p += i;
}
if(p >= o)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}