24点游戏

/*
name:24点游戏
Author:田野
Date:2018.9.27
*/
#include
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
int a;
int b;
int c;
int d;
start:/为go to 语句做标记/
cout<<“请输入4个整型数据,范围在1-13之间即可”<<endl;/按照要求逐步输入四个数据/
cout<<" 第一个数:";
cin>>a;
cout<<" 第二个数:";
cin>>b;
cout<<" 第三个数:";
cin>>c;
cout<<" 第四个数:";
cin>>d;
cout<<“输出所有算法如下:”<<endl;
if ((a<1)||(a>13)||(b<1)||(b>13)||(c<1)||(c>13)||(d<1)||(d>13))
{ cout<<“输入数据超出取值范围,请重新输入”<<endl;
goto start;

}
/此处使用go to 语句,其主要目的是为了满足所输入的四个整型
数据的取值范控制在1-13之间,超出该范围就需要重新从键盘输入数据
/
int Cal( float a, float b , float c, float d);
/列出所输入的四个数a,b,c,d的所有排列组合情况,四个数共有24中排列组合/
Cal(a,b,d,c); Cal(a,b,c,d); Cal(a,c,d,b); Cal(a,c,b,d);
Cal(a,d,b,c); Cal(a,d,c,b); Cal(b,a,c,d); Cal(b,a,d,c);
Cal(b,c,a,d); Cal(b,c,d,a); Cal(b,d,c,a); Cal(b,d,a,c);
Cal(c,a,b,d); Cal(c,a,d,b); Cal(c,b,d,a); Cal(c,b,a,d);
Cal(c,d,a,b); Cal(c,d,b,a); Cal(d,a,b,c); Cal(d,a,c,b);
Cal(d,b,c,a); Cal(d,b,a,c); Cal(d,c,a,b); Cal(d,c,b,a);
return 0;
}
int Cal( float x, float y, float z, float w)
/列出运算表达式的所有情况,在运行界面中如果有满足条件的就显示/
{
if(xy-z+w==24)
cout<<x<<"
"<<y<<"-"<<z<<"+"<<w<<"=24"<<endl;
if ((x-y)zw24)
cout<<"("<<x<<"-"<<y<<")"<<""<<z<<""<<w<<"=24"<<endl;
if ((xy)+(zw)24)
cout<<"("<<x<<""<<y<<")+("<<z<<""<<w<<")"<<"=24"<<endl;
if ((x+y)zw
24)
cout<<"("<<x<<"+"<<y<<")"<<""<<z<<""<<w<<")"<<"=24"<<endl;
if (xyz*w
24)
cout<<x<<""<<y<<""<<z<<""<<w<<"=24"<<endl;
if ((x+y
z)w==24)
cout<<"("<<x<<"+"<<y<<"
"<<z<<")"<<""<<w<<"=24"<<endl;
if ((x
y-z)w==24)
cout<<"("<<x<<"
"<<y<<"-"<<z<<")"<<""<<w<<"=24"<<endl;
if ((x
y)+z+w24)
cout<<"("<<x<<"*"<<y<<")+"<<z<<"+"<<w<<"=24"<<endl;
if ((x/y-z)*w
24)
cout<<"("<<x<<"/"<<y<<"-"<<z<<")"<<""<<w<<"=24"<<endl;
if ((x-(y-z))w==24)
cout<<"("<<x<<"-"<<"("<<y<<"-"<<z<<")"<<")
"<<w<<"=24"<<endl;
if (x-(y-z-w)==24)
cout<<x<<"-"<<"("<<y<<"-"<<z<<"-"<<w<<")"<<"=24"<<endl;
if (x+y-(z-w)==24)
cout<<x<<"+"<<y<<"-"<<"("<<z<<"-"<<w<<")"<<"=24"<<endl;
if (x
(y/z-w)24)
cout<<x<<""<<"("<<y<<"/"<<z<<"-"<<w<<")"<<"=24"<<endl;
if ((x-y
z)*w
24)
cout<<"("<<x<<"-"<<y<<""<<z<<")"<<""<<w<<"=24"<<endl;
if (x*(y-z)+w24)
cout<<x<<"*"<<"("<<y<<"-"<<z<<")"<<"+"<<w<<"=24"<<endl;
if (x+y+z/w
24)
cout<<x<<"+"<<y<<"+"<<z<<"/"<<w<<"=24"<<endl;
if ((x-y)(z-w)==24)
cout<<"("<<x<<"-"<<y<<")
("<<z<<"-"<<w<<")=24"<<endl;
if ((x+y)z/w==24)
cout<<"("<<x<<"+"<<y<<")
"<<z<<"/"<<w<<"=24"<<endl;
if (xy/(z-w)==24)
cout<<x<<"
"<<y<<"/"<<"("<<z<<"-"<<w<<")"<<"=24"<<endl;
if ((x+y)(z+w)==24)
cout<<"("<<x<<"+"<<y<<")
("<<z<<"+"<<w<<")=24"<<endl;
if ((x-y)z/w==24)
cout<<"("<<x<<"-"<<y<<")
"<<z<<"/"<<w<<"=24"<<endl;
if (x+(y+z)/w24)
cout<<x<<"+"<<"("<<y<<"+"<<z<<")"<<"/"<<w<<"=24"<<endl;
if (xy/(z+w)==24)
cout<<x<<"
"<<y<<"/"<<z<<"+"<<w<<")"<<"=24"<<endl;
if ((x+y)*z/w
24)
cout<<"("<<x<<"+"<<y<<")"<<z<<"/"<<w<<"=24"<<endl;
if ((x
y+z)w==24)
cout<<"("<<x<<"
"<<y<<"+"<<z<<")"<<""<<w<<"=24"<<endl;
if ((x
y-z)/w24)
cout<<"("<<x<<"*"<<y<<"-"<<z<<")"<<"/"<<w<<"=24"<<endl;
if ((x/y+z)*w
24)
cout<<"("<<x<<"/"<<y<<"+"<<z<<")"<<""<<w<<"=24"<<endl;
if ((x
y)/z/w24)
cout<<"("<<x<<"*"<<y<<")/"<<z<<"/"<<w<<"=24"<<endl;
if (x+y+z-w
24)
cout<<x<<"+"<<y<<"+"<<z<<"-"<<w<<"=24"<<endl;
if (x-(y-z)+w24)
cout<<x<<"-"<<"("<<y<<"-"<<z<<")"<<"+"<<w<<"=24"<<endl;
if (x/(y-z/w)24)
cout<<x<<"/"<<"("<<y<<"-"<<z<<"/"<<w<<")"<<"=24"<<endl;
if (x+(y-z)*w
24)
cout<<x<<"+"<<"("<<y<<"-"<<z<<")*"<<w<<"=24"<<endl;
if ((x+y+z)*w
24)
cout<<"("<<x<<"+"<<y<<"+"<<z<<")"<<w<<"=24"<<endl;
if ((x+y+z)w==24)
cout<<"("<<x<<"+"<<y<<"+"<<z<<")
"<<w<<"=24"<<endl;
if (x+y
z-w24)
cout<<x<<"+"<<y<<""<<z<<"-"<<w<<"=24"<<endl;
if (x
y-z/w
24)
cout<<x<<""<<y<<"-"<<z<<"/"<<w<<"=24"<<endl;
if ((x+y)z-w==24)
cout<<"("<<x<<"+"<<y<<"
"<<z<<"-"<<w<<"=24"<<endl;
if ((x-y/z)w==24)
cout<<"("<<x<<"-"<<y<<"/"<<z<<")
"<<w<<"=24"<<endl;
if (x
(y+z)+w24)
cout<<x<<""<<"("<<y<<"+"<<z<<")"<<"+"<<w<<"=24"<<endl;
if ((x
y)+(z/w)24)
cout<<"("<<x<<""<<y<<")-("<<z<<"/"<<w<<")"<<"=24"<<endl;
if ((x
y)/z-w
24)
cout<<"("<<x<<"*"<<y<<")/"<<z<<"-"<<w<<"=24"<<endl;
if ((x+y/z)*w
24)
cout<<"("<<x<<"+"<<y<<"/"<<z<<")"<<w<<"=24"<<endl;
if ((x
yz)/w==24)
cout<<"("<<x<<"
"<<y<<""<<z<<")/"<<w<<"=24"<<endl;
if ((x+y
z)/w24)
cout<<"("<<x<<"+"<<y<<""<<z<<")/"<<w<<"=24"<<endl;
if (x+(y
z)+w
24)
cout<<x<<"+"<<"("<<y<<""<<z<<")+"<<w<<"=24"<<endl;
if (x-(y+z)w==24)
cout<<x<<"-("<<y<<"+"<<z<<")
"<<w<<"=24"<<endl;
if (x-(y-z)w==24)
cout<<x<<"-("<<y<<"-"<<z<<")
"<<w<<"=24"<<endl;
if ((x
y)-z-w24)
cout<<"("<<x<<"*"<<y<<")-"<<z<<"-"<<w<<"=24"<<endl;
if (x+y/z+w
24)
cout<<x<<"+"<<y<<"/"<<z<<"+"<<w<<"=24"<<endl;
if ((x-y)z-w==24)
cout<<"("<<x<<"-"<<y<<"
"<<z<<"-"<<w<<"=24"<<endl;
if ((x+y)/z+w24)
cout<<"("<<x<<"+"<<y<<"/"<<z<<"+"<<w<<"=24"<<endl;
if ((x*y)+z-w
24)
cout<<"("<<x<<""<<y<<")+"<<z<<"-"<<w<<"=24"<<endl;
if ((x/y)+z+w==24)
cout<<"("<<x<<"/"<<y<<"+"<<z<<"+"<<w<<"=24"<<endl;
if ((x
y)z-w==24)
cout<<"("<<x<<"
"<<y<<")("<<z<<")-"<<w<<"=24"<<endl;
if ((x
y+z)/w24)
cout<<"("<<x<<""<<y<<"+"<<z<<")/"<<w<<"=24"<<endl;
if (x+y+z
w
24)
cout<<x<<"+"<<y<<"+"<<z<<""<<w<<"=24"<<endl;
if (x
(y-z)/w24)
cout<<x<<""<<"("<<y<<"-"<<z<<")/"<<w<<"=24"<<endl;
if (x/y
z+w
24)
cout<<x<<"/"<<y<<""<<z<<"+"<<w<<"=24"<<endl;
if (x+y
zw==24)
cout<<x<<"+"<<y<<"
"<<z<<""<<w<<"=24"<<endl;
if (x+y+z+w==24)
cout<<x<<"+"<<y<<"+"<<z<<"+"<<w<<"=24"<<endl;
if ((x
y)/(zw)==24)
cout<<"("<<x<<"
"<<y<<")/("<<z<<""<<w<<")"<<"=24"<<endl;
if (x+(y+z)w==24)
cout<<x<<"+("<<y<<"+"<<z<<")
"<<w<<"=24"<<endl;
if ((x-y)z+w==24)
cout<<"("<<x<<"-"<<y<<"
"<<z<<"+"<<w<<"=24"<<endl;
if ((x+y+z)/w24)
cout<<"("<<x<<"+"<<y<<"+"<<z<<")/"<<w<<"=24"<<endl;
if ((x+y)*z+w
24)
cout<<"("<<x<<"+"<<y<<")
"<<z<<"+"<<w<<"=24"<<endl;
if ((xy)z+w==24)
cout<<"("<<x<<"
"<<y<<")
("<<z<<")+"<<w<<"=24"<<endl;
if ((xy)-(z-w)==24)
cout<<"("<<x<<"
"<<y<<")-("<<z<<"-"<<w<<")"<<"=24"<<endl;
if ((xy)-(z+w)==24)
cout<<"("<<x<<"
"<<y<<")-("<<z<<"+"<<w<<")"<<"=24"<<endl;
if ((x-y-z)w==24)
cout<<"("<<x<<"-"<<y<<"-"<<z<<")
"<<w<<"=24"<<endl;
if ((xy)/z+w==24)
cout<<"("<<x<<"
"<<y<<")/"<<z<<"+"<<w<<"=24"<<endl;
if ((x+y-z)w==24)
cout<<"("<<x<<"+"<<y<<"-"<<z<<")
"<<w<<"=24"<<endl;
if (x/(y/z-w)==24)
cout<<x<<"/("<<y<<"/"<<z<<"-"<<w<<")=24"<<endl;
if ((xy)-(zw)==24)
cout<<"("<<x<<""<<y<<")-("<<z<<""<<w<<")"<<"=24"<<endl;
else
cout<<" "<<endl;
return 0;
}
穷举法就是列出4个数字加减乘除的各种可能性。首先我们将4个数设为a,b,c,d,,将其排序列出四个数的所有排序序列组合(共有A44=24种组合)。再进行符号的排列表达式,其中算术符号有+,—,,/,( )。其中有效的表达式有a(b-c/b),ab-cd,等等。列出所有有效的表达式。其中a,b,c,d的范围是1到13。用随机函数产生四个1-13的数。要实现24点的算法,就是通过4个数字,4个运算符号和2对括号(最多为2对),通过各种组合判断其结果是否为24。我们用a,b,c,d代替4个数字。考虑每种可能,总的算法就有7种可能。
1没括号的(形如abc*d);
2有括号的(形如(a * b) * c * d);
3有括号的(形如(a * b * c) * d);
4有括号的(形如a * (b * c) * d);
5有括号的(形如(a * b) * (c * d));
6有括号的(形如((a * b) * c) * d);
7有括号的(形如(a * (b * c)) * d)。
实现24点游戏我使用的是穷举法,所以最主要的就是将所有的情况一一列举出来,首先得列出四个数字的排列组合序列,然后在进行对运算符的排列,在这个过程中情况较多比较繁琐,也很有可能缺少几种情况或者多出来几个,但是最终的结果应该是正确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值