C语言学习——24点改编

“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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值