“24点”是一种扑克牌游戏。具体玩法是一副牌中抽去大小王剩下52张,任意抽取4张牌,利用四则运算把牌面上的数算成24。每张牌能且只能用一次。如5、1、7、1,可以用(5-1)×(7-1)或(5+7)×(1+1)两种方法得到。
经计算机准确计算,一副牌(54张,其中去掉两张王牌)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点,如1、1、1、5。现我们将规则修改如下:1、每次是5张牌;2、只能用加法或减法,不允许用乘法和除法;3、5张牌不要求都用,但如果要用只能用一次;4、牌面点数的范围是大于等于-30且小于等于30。
现在就请你写一段程序来判断某5张牌是否能算出24点。
输入格式
第一行为一个整数T(0<T<20),代表测试数据组数。后边是T行,每行均为5个用空格分隔的整数(每个整数都大于等于-30且小于等于30),代表牌点。
输出格式
为T行,每行对应前边的T组测试数据,如果根据规则能算出24则该行输出YES,否则输出NO。
输入样例2
6 6 6 6 6
5 5 5 5 5
输出样例
YES
NO
#include<stdio.h>
int main(){
int T,a=0;
scanf("%d",&T);
for(int i=1;i<=T;i++){
a=0;
int A[5]={0};
for(int k=0;k<=4;k++){
scanf("%d",&a);
A[k]=a;
}
for(int j=(-1);j<=1;j++){
for(int l=-1;l<=1;l++){
for(int m=-1;m<=1;m++){
for(int n=-1;n<=1;n++){
for(int x=-1;x<=1;x++){
if(A[0]*j+A[1]*l+A[2]*m+A[3]*n+A[4]*x==24){
a=1;
}
}
}
}
}
}
if(a==1) printf("YES\n");
else printf("NO\n");
}
return 0;
}