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

来源:互联网 发布:上海海洋大学网络教学 编辑:程序博客网 时间:2024/06/07 18:33


算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]; }}

原创粉丝点击