最后的24
来源:互联网 发布:黑帽seo视频教程 编辑:程序博客网 时间:2024/04/30 03:24
#include<iostream>
#include<math.h>
using namespace std;
int used[4]={0},flag=0;
double an[4],bn[4];
int search(int m);
double cal(double a,double b,int fu);//函数也要参与运算,也是double
int pan(double a,double b,double c,double d);
int main()
{
int i;
for(i=0;i<4;i++)
cin>>an[i];
search(0);
if(flag==0)
cout<<"No"<<endl;
}
int search(int m)
{
int i,j;
if(m==4)
{
pan(bn[0],bn[1],bn[2],bn[3]);
for(j=0;j<4;j++)
{
if(used[j]!=0)
used[j]==0;
}
}
else
{
for(i=0;i<4;i++)
{
if(used[i]==0)
{
bn[m]=an[i];
used[i]=1;
search(m+1);
used[i]=0;
}
}
}
}
int pan(double a,double b,double c,double d)
{
int ce[4];
int yun[3]={0,1,2};//+ - *
int i,j,k;
ce[1]=b;
ce[2]=c;
ce[3]=d;
ce[0]=a;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
for(k=0;k<4;k++)
{
if(fabs(cal(cal(cal(ce[0],ce[1],i),ce[2],j),ce[3],k)-24)<0.000001&&flag==0)
{
cout<<"Yes"<<endl;
flag=1;
return 0;
}
if(fabs(cal(cal(ce[0],ce[1],i),cal(ce[2],ce[3],j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(cal(ce[0],cal(ce[1],ce[2],i),j),ce[3],k)-24)<0.000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(ce[0],cal(cal(ce[1],ce[2],i),ce[3],j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(ce[0],cal(ce[1],cal(ce[2],ce[3],i),j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
}
}
}
}
double cal(double a,double b,int fu)
{
if(fu==0)
return(a+b);
else if(fu==1)
return(a-b);
else if(fu==2)
return(a*b);
else if(fu==3&&b!=0)//是一个除号;被除数不为0
return(a/b);
else//要么回一个不可能达到的数
return(10000);
#include<math.h>
using namespace std;
int used[4]={0},flag=0;
double an[4],bn[4];
int search(int m);
double cal(double a,double b,int fu);//函数也要参与运算,也是double
int pan(double a,double b,double c,double d);
int main()
{
int i;
for(i=0;i<4;i++)
cin>>an[i];
search(0);
if(flag==0)
cout<<"No"<<endl;
}
int search(int m)
{
int i,j;
if(m==4)
{
pan(bn[0],bn[1],bn[2],bn[3]);
for(j=0;j<4;j++)
{
if(used[j]!=0)
used[j]==0;
}
}
else
{
for(i=0;i<4;i++)
{
if(used[i]==0)
{
bn[m]=an[i];
used[i]=1;
search(m+1);
used[i]=0;
}
}
}
}
int pan(double a,double b,double c,double d)
{
int ce[4];
int yun[3]={0,1,2};//+ - *
int i,j,k;
ce[1]=b;
ce[2]=c;
ce[3]=d;
ce[0]=a;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
for(k=0;k<4;k++)
{
if(fabs(cal(cal(cal(ce[0],ce[1],i),ce[2],j),ce[3],k)-24)<0.000001&&flag==0)
{
cout<<"Yes"<<endl;
flag=1;
return 0;
}
if(fabs(cal(cal(ce[0],ce[1],i),cal(ce[2],ce[3],j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(cal(ce[0],cal(ce[1],ce[2],i),j),ce[3],k)-24)<0.000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(ce[0],cal(cal(ce[1],ce[2],i),ce[3],j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
if(fabs(cal(ce[0],cal(ce[1],cal(ce[2],ce[3],i),j),k)-24)<0.0000001&&flag==0)
{
flag=1;
cout<<"Yes"<<endl;
return 0;
}
}
}
}
}
double cal(double a,double b,int fu)
{
if(fu==0)
return(a+b);
else if(fu==1)
return(a-b);
else if(fu==2)
return(a*b);
else if(fu==3&&b!=0)//是一个除号;被除数不为0
return(a/b);
else//要么回一个不可能达到的数
return(10000);
}
再除法中,按照题目的定义,我们需要注意的问题是,被除数不等于0,且能被整除,如果不满足,就会一个永远不能到24得数
再这个题目中,由于出现了分数,所以采用绝对值得形式处理,这是不用满足整除条件,但是,必须要把该变成double的变成double,比如cal函数
阅读全文
0 0
- 最后的24
- 最后的
- 最后一篇,最后的自信
- 写在最后的暑假的最后时刻
- 真的是最后的最后了!
- 最后的最后的一场考试
- 唉~最后的战线!
- 留住最后的激情
- 404的最后一天
- 了却最后的烦恼
- 最后的战役
- 最后的记忆
- 最后的回忆
- 最后假期的失落
- 最后的自尊
- 写在一年的最后
- 最后一周的总结。
- 最后的饕餮
- 面试题26:复杂链表的复制
- windows下pem转ppk
- 算24,不会递归,所以没用,很粗糙的程序
- jquery常用选择器
- 企业 流程优化
- 最后的24
- DataURL与File,Blob,canvas对象之间的互相转换的Javascript
- 第十三周项目—验证算法(1)
- ubuntu/window安装dukto
- 在浏览器控制台书写JavaScript代码
- Oracle数据库启动报ORA-03113错误解决方案
- Boost库解密——自动链接库(auto_link)
- IE盒子模型和标准W3C盒子模型
- ONVIF协议网络摄像机(IPC)客户端程序开发(15):遮挡报警