C++——算24(4个数不改变顺序,运算次序确定能否得到24)

本文介绍了一个简单的24点游戏算法实现方案,通过预定义的运算规则((a ? b) ? c) ? d),在给定四个1到13之间的整数条件下判断是否能够通过加、减、乘三种运算获得24。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



算24(4个数不改变顺序,运算次序确定能否得到24)

时限:1000ms 内存限制:10000K 总时限:3000ms

描述:

 

输入4个1~13的整数,不改变顺序,且运算次序为先做第一个运算,再做第二个运算,最后做第三个运算,即(((a ? b) ? c) ? d), 能否得到24。

输入:

 

输入4个1~13的整数。

输出:

 

不改变4个整数的顺序,且运算次序为先做第一个运算,再做第二个运算,最后做第三个运算的情况下,能否得到24。
如果能则输出“Yes”,否则输出“No”。

输入样例:

 


 

1 5 4 1

 

输出样例:

 


 

Yes

 

 

#include<iostream>

using namespace std;

void init(); int calc(int n); int x,y; int a[4];

int main() {  int i,j,k,l,m;  int b[3];

 init();

 for(l=0;l<3;l++)  {   x=a[l];   y=a[l+1];   for(m=0;m<3;m++)   {    b[l]=calc(m);    int z=b[l];             b[(l+1)%3]=a[(l+2)%4];    b[(l+2)%3]=a[(l+3)%4];          for(i=0;i<2;i++)           {           x=b[i];           y=b[i+1];                 for(j=0;j<3;j++)              {                x=calc(j);               y=b[(i+2)%3];               for(k=0;k<3;k++)                {                if(calc(k)==24)                {                    cout<<"Yes"<<endl;                 return 0;                }            }                     x=b[i];               y=b[i+1];     }                 x=a[l];                 y=a[l+1];           }   }  }  cout<<"No"<<endl;  return 0; }

int calc(int n) {  if(n==0)  {   return(x+y);  }  else if(n==1)  {   return(x-y);  }  else if(n==2)  {   return(x*y);  } }

void init() {  int i;

 for(i=0;i<4;i++)  {   cin>>a[i];  } }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值