24点

我是一一举例的

#include<iostream>
using namespace std;

void swap(float *a,float *b,float *c,float *d,int x)
{ float n,m,p,q;
n=*a;m=*b;p=*c;q=*d;
switch(x)
{
case 1:{*a=n;*b=m;*c=p;*d=q;};break;
case 2:{*a=n;*b=m;*d=p;*c=q;};break;
case 3:{*a=n;*c=m;*b=p;*d=q;};break;
case 4:{*a=n;*c=m;*d=p;*b=q;};break;
case 5:{*a=n;*d=m;*b=p;*c=q;};break;
case 6:{*a=n;*d=m;*c=p;*b=q;};break;
case 7:{*b=n;*a=m;*c=p;*d=q;};break;
case 8:{*b=n;*a=m;*d=p;*c=q;};break;
case 9:{*b=n;*c=m;*a=p;*d=q;};break;
case 10:{*b=n;*c=m;*d=p;*a=q;};break;
case 11:{*b=n;*d=m;*a=p;*c=q;};break;
case 12:{*b=n;*d=m;*c=p;*a=q;};break;
case 13:{*c=n;*a=m;*b=p;*d=q;};break;
case 14:{*c=n;*a=m;*d=p;*b=q;};break;
case 15:{*c=n;*d=m;*a=p;*b=q;};break;
case 16:{*c=n;*d=m;*b=p;*a=q;};break;
case 17:{*c=n;*b=m;*a=p;*d=q;};break;
case 18:{*c=n;*b=m;*d=p;*a=q;};break;
case 19:{*d=n;*a=m;*b=p;*c=q;};break;
case 20:{*d=n;*a=m;*c=p;*b=q;};break;
case 21:{*d=n;*b=m;*a=p;*c=q;};break;
case 22:{*d=n;*b=m;*c=p;*a=q;};break;
case 23:{*d=n;*c=m;*a=p;*b=q;};break;
case 24:{*d=n;*c=m;*b=p;*a=q;};break;
}
}
char fh(int i)
{ char r;
if(i==1) r=‘+‘;
else if(i==2) r=‘-‘;
else if(i==3) r=‘*‘;
else r=‘/‘;
return r;
}

float suan(int i,float a,float b)
{
if(i==1) return a+b;
else if(i==2) return a-b;
else if(i==3) return a*b;
else if(i==4) return a/b;
}

int qiude(float a,float b,float c,float d)
{int i1,i2,i3,n;
float x,y,p,q,s=0,s1=0;
x=a;y=b;p=c;q=d;
for(n=1;n<=24;n++)
{
swap(&a,&b,&c,&d,n);
for(i1=1;i1<=4;i1++)
for(i2=1;i2<=4;i2++)
for(i3=1;i3<=4;i3++)
{
s=suan(i1,a,b);
s=suan(i2,s,c);
s=suan(i3,s,d);
if(s-24<0.001&&s-24>-0.001)
{
cout<<"(("<<a<<fh(i1)<<b<<")"<<fh(i2)<<c<<")"<<fh(i3)<<d<<"=24"<<endl;
return 0;
}
else
s=0;
s=suan(i1,a,b);
s=suan(i2,c,s);
s=suan(i3,s,d);
if(s-24<0.001&&s-24>-0.001)
{
cout<<"("<<c<<fh(i2)<<"("<<a<<fh(i1)<<b<<"))"<<fh(i3)<<d<<"=24"<<endl;
return 0;
}
else
s=0;
s=suan(i1,a,b);
s=suan(i2,s,c);
s=suan(i3,d,s);
if(s-24<0.001&&s-24>-0.001)
{
cout<<d<<fh(i3)<<"(("<<a<<fh(i1)<<b<<")"<<fh(i2)<<c<<")=24"<<endl;
return 0;
}
else
s=0;
s=suan(i1,a,b);
s=suan(i2,c,s);
s=suan(i3,d,s);
if(s-24<0.001&&s-24>-0.001)
{
cout<<d<<fh(i3)<<"("<<c<<fh(i2)<<"("<<a<<fh(i1)<<b<<"))=24"<<endl;
return 0;
}
else
s=0;
}
for(i1=1;i1<=4;i1++)
for(i2=1;i2<=4;i2++)
for(i3=1;i3<=4;i3++)
{
s=suan(i1,a,b);
s1=suan(i3,c,d);
s=suan(i2,s,s1);
if(s-24<0.001&&s-24>-0.001)
{
cout<<"("<<a<<fh(i1)<<b<<")"<<fh(i2)<<"("<<c<<fh(i3)<<d<<")"<<"=24"<<endl;
return 0;
}
else
s=0;

}
a=x;b=y;c=p;d=q;
}
cout<<"无法算得24点。"<<endl;
return 0;}
int main()
{ float a=0,b=0,c=0,d=0;
cout<<"要算24点吗?四个数之间以空格分开,要结束程序输-1."<<endl;
while(a!=-1)
{
cin>>a;
if(a==-1)
break;
cin>>b>>c>>d;
qiude(a,b,c,d);
cout<<endl;
}
cout<<"Over.\n";
return 0;
}

时间: 2024-10-11 18:56:37

24点的相关文章

24、剑指offer--二叉树中和为某一值的路径

题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 解题思路:本题采用先序遍历,遍历到叶子节点,如果和不等于其值,则返回至上一层的根结点,本题使用栈结构来存储路径,这样可以方便返回上一父结点的时候,将当前结点从路径中删除 1 /*struct TreeNode { 2 int val; 3 struct TreeNode *left; 4 struct TreeNode *right; 5 Tre

【网络流24题】No.19 负载平衡问题 (费用流)

[题意] G 公司有 n 个沿铁路运输线环形排列的仓库, 每个仓库存储的货物数量不等. 如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入文件示例input.txt517 9 14 16 4 输出文件示例output.txt11 [分析] 其实我觉得这题可以贪心啊..n^2贪心??.没细想.. 打的是费用流.. 大概这样建图: 懒得写了..凌乱之美.. 求满流费用.. 1 #include<cstdio> 2 #include<cstdlib&

Train Herblore Level with 9% off 500M runescape gold shop on RSorder 8.19-8.24

When an employer conducts a background rs3 gold check on their own they will usually only get a hold of information on the location held, dates associated with employment and in case the candidate is entitled to rehire.The very Runescape Grand Switch

192.168.0.1/16,1/24;192.168.1.1/16,1/24 &nbsp; IP段的意思

首先来了解一下二进制的转换知识: 二进制数转换成十进制数 二进制的1101转化成十进制1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始相反 用十进制的13除以2 每除一下将余数就记在旁边最后按余数从下向上排列就可得到1101十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写 就是结果例如302302/2 = 151 余0151/2 = 75 余175/2 = 37 余1

家庭作业6.23 6.24 6.26 10.6

6.23 设半径为r的磁盘总的磁道是K 如上图去除的部分x*r的磁道数为x*K 那么剩下的磁道数为 (1-x)*K 所以总容量为 2*pi*x*r*(1-x)*K (其中pi,r和K都是常数) 也就是对x*(1-x)进行判断 可以得出x = 0.5的时候取最大 6.24 6.26 可以由以下公式计算得出 10.6 Unix进程打开的描述符赋给了stdin(描述符0).stdout(描述符1)和stderr(描述符2). open函数总是返回最低的未打开的描述符,所以第一次调用open函数会返回描

IOS 阶段学习第24天笔记(Block的介绍)

IOS学习(OC语言)知识点整理 一.Block 的介绍 1)概念: block 是一种数据类型,类似于C语言中没有名字的函数,可以接收参数,也可以返回值与C函数一样被调用 封装一段代码 可以在任何地方调用 block 也可以作为函数参数,以及函数返回值 2)Block 实例代码 1 //定义了一个block类型MyBlock,MyBlock类型的变量只能指向带两个int的参数和返回int的代码块 2 typedef int (^MyBlock)(int,int); 3 //定义一个函数指针 4

程序猿之---C语言细节24(段错误、类型提升、sizeof &#39;A&#39;)

主要内容:段错误.类型提升.sizeof  'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; int *p = (int *)&(u.a[1]); // 没有引起总线错误 *p = 17; printf("%d\n",*p); #if 0 int *q = 0; // 引起段错误,在linux中运行可看到段错误,在windows下运行时直接出错 *q = 1; #endif

2-08. 用扑克牌计算24点(25) (ZJU_PAT 数学 枚举)

题目链接:http://pat.zju.edu.cn/contests/ds/2-08 一副扑克牌的每张牌表示一个数(J.Q.K分别表示11.12.13,两个司令都表示6).任取4张牌,即得到4个1~13的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式.每个数只能参与一次运算,4个数顺序可以任意组合,4个运算符任意取3个且可以重复取.运算遵从一定优先级别,可加括号控制,最终使运算结果为24.请输出一种解决方案的表达式,用括号表示运算优先.如果没有一种解决方案,则输出-1

分享一个可以获取7天24小时的天气预报API,包含PM2.5等数据

api地址: pm2.5 api http://api.lib360.net/open/pm2.5.json?city=洛阳 7天24小时天气api http://api.lib360.net/open/weather.json?city=苏州 GET 请求 参数 prov   可选省份 如:江苏  河北 city   城市名称 如:苏州 上海 返回数据格式 json data 字段 返回7天的天气状况,包含今天 data24 返回 今天24小时内的预报 pm25 返回当前城市的 pm25 值

《Sams Teach Yourself Windows? Workflow Foundation in 24 Hours》读书笔记目录

目录 1 Part I - The Basics 1.1 Hour 1 - Understanding Windows Workflow Foundation 1.2 Hour 2 - A Spin Around Windows Workflow Foundation 1.3 Hour 3 - Learning Basic Hosting 1.4 Hour 4 - Learning Host-Workflow Data Exchange 1.5 Hour 5 - Creating an Esca