C++编程求24点

速算24点,输入4张牌,1—10,用+,-,/,*,(),求出24点

刚刚编好的
我也是初学者哈
有点烦琐 还有一点小问题
但肯定可以用的哈
// 24.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
fanhui:
cout<<"请输入4个数据"<<endl;
cout<<" 第一个:";
cin>>a;
cout<<" 第二个:";
cin>>b;
cout<<" 第三个:";
cin>>c;
cout<<" 第四个:";
cin>>d;
if ((a<0)||(a>10)||(b<0)||(b>10)||(c<0)||(c>10)||(d<0)||(d>10))
{
cout<<"你输入的输入不对,重新输入"<<endl;
goto fanhui;
}
int jisuan (int x,int y,int z,int w);

jisuan(a,b,c,d);
jisuan(a,b,d,c);
jisuan(a,c,d,b);
jisuan(a,c,b,d);
jisuan(a,d,b,c);
jisuan(a,d,c,b);
jisuan(b,a,c,d);
jisuan(b,a,d,c);
jisuan(b,c,a,d);
jisuan(b,c,d,a);
jisuan(b,d,c,a);
jisuan(b,d,a,c);
jisuan(c,a,b,d);
jisuan(c,a,d,b);
jisuan(c,b,d,a);
jisuan(c,b,a,d);
jisuan(c,d,a,b);
jisuan(c,d,b,a);
jisuan(d,a,b,c);
jisuan(d,a,c,b);
jisuan(d,b,c,a);
jisuan(d,b,a,c);
jisuan(d,c,a,b);
jisuan(d,c,b,a);

return 0;
}
int jisuan (int x,int y,int z,int w)
{
if (x+y+z+w==24) cout<<x<<"+"<<y<<"+"<<z<<"+"<<w<<"=24"<<endl;
else if
(x+y+z-w==24) cout<<x<<"+"<<y<<"+"<<z<<"-"<<w<<"=24"<<endl;
else if
((x+y)*(z+w)==24) cout<<"("<<x<<"+"<<y<<")*("<<z<<"+"<<w<<")=24"<<endl;
else if
((x-y)*(z+w)==24) cout<<"("<<x<<"-"<<y<<")*("<<z<<"+"<<w<<")=24"<<endl;
else if
((x-y)*(z-w)==24) cout<<"("<<x<<"-"<<y<<")*("<<z<<"-"<<w<<")=24"<<endl;
else if
((x+y+z)*w==24) cout<<"("<<x<<"+"<<y<<"+"<<z<<")*"<<w<<"=24"<<endl;
else if
((x-y-z)*w==24) cout<<"("<<x<<"-"<<y<<"-"<<z<<")*"<<w<<"=24"<<endl;
else if
((x+y-z)*w==24) cout<<"("<<x<<"+"<<y<<"-"<<z<<")*"<<w<<"=24"<<endl;
else if
((x*y*z)*w==24) cout<<"("<<x<<"*"<<y<<"*"<<z<<")*"<<w<<"=24"<<endl;
else if
((x*y)*(z*w)==24) cout<<"("<<x<<"*"<<y<<")*("<<z<<"*"<<w<<")=24"<<endl;
else if
((x*y)*(z-w)==24) cout<<"("<<x<<"*"<<y<<")*("<<z<<"-"<<w<<")=24"<<endl;
else if
((x*y)*z-w==24) cout<<"("<<x<<"*"<<y<<")*("<<z<<")-"<<w<<"=24"<<endl;
else if
((x*y)*z+w==24) cout<<"("<<x<<"*"<<y<<")*("<<z<<")+"<<w<<"=24"<<endl;
else if
(x*y*z*w==24) cout<<x<<"*"<<y<<"*"<<z<<"*"<<w<<"=24"<<endl;
else cout<<"不可以组成24"<<endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-30
晕死 你书上找找很多的

求算24点的算法实现C++
include <string> include <cmath> using namespace std;const double PRECISION = 1E-6;const int COUNT_OF_NUMBER = 4;const int NUMBER_TO_BE_CAL = 24;double number[COUNT_OF_NUMBER];string expression[COUNT_OF_NUMBER];bool S...

c++ 24点
然后你再第二个for循环里面,sum_x[3]=sum[0][l] \/ sum[1][k]; 一旦第一个for里面有结果为0,你这里就变成除以0,然后就崩溃了。你试试把所有的数组都改成float或者double类型。然后判断值是否为24点时,用实数的方式来判断。

求24点游戏的算法,VC++
以下是c++(win32工程)的代码,你看一下对不对 include <iostream> include using namespace std;const int size=9;class guess { public:void randnum();void cutnumguess(int);void done();bool guessn;int a;int b;private:int rslt[4];int guessnum[4];}game;void guess::randnum(){...

C++中24点算法的实现
include <string> include <cmath> using namespace std;const double PRECISION = 1E-6;const int COUNT_OF_NUMBER = 4;const int NUMBER_TO_BE_CAL = 24;double number[COUNT_OF_NUMBER];string expression[COUNT_OF_NUMBER];bool Search(int n){ if (n ...

c++ 算24点 求助
不过测试后,我发现其实这个思路有一个非常大的问题,它无法计算(3*4)+(3*4)=24 -_- or 240\/(9+2\/2)这样的困难的24点问题,还望你仔细思考一下,换换思路。include<iostream> using namespace std;int main(){ int i1,i2,i3,i4,v,n1,n2;int num=0;int a,b;double t1,t2,t3...

用C++ 用N个数算任意点(比如用4个数算24点)
{ freopen("G:\\C++程序\\临时存放程序\\c++训练程序","r",stdin);freopen ("test.out","w",stdout);char x[6]={'+','-','~','*','\/','%'};double temp, a[4],b[3],c[2];int i ,j , k, m ,n ,p ,q, sum;loop1:sum=0;cout<<"请输入求24点的四个数:\\n";...

24点游戏算法 C\/C++ 求解释,要汉语注释!!!越详细越好!!!
define RESULT 24 define LENGTH 20 double number[COUNT]; \/\/这里一定要用double,看看第一题的答案就知道为什么了 char *expression[COUNT]; \/\/保存表达式 void combine(char *exp, char *exp1, char *exp2, char *op); \/\/连接字符串 int test(int n);void combine(char *exp, cha...

用扑克牌实现24点游戏,c++编写
if(s2[n1][n2]\/t4==24)cout<<") \/ "<<t4<<" = 24 \\n";num++;} }}} }}} for(i1=0;i1<4;i1++){ t1=choice[i1];for(i2=0;i2<4;i2++){ if(i2!=i1){ t2=choice[i2];s1[0]=t1*t2;s1[1]=t1\/t2;for(i3=0;i3<4;i3++){ if(i3!=i1&&i3!=i2){ t3...

point24 c++
\/\/24点程序,一括号位置有12,13,14(无括号),23,24,34,运算符号有+-*\/四种 double fStack[8];\/\/操作数栈 int cStack[8];\/\/操作符栈 int nFTop=0;int nCTop=0;int FindNum=0;int printon=1;define fabs(x) ((x>0)?x:-x)\/\/双目基本运算 int cal(double a, double b, int c...

C或C++高手进从1到13中任选4个数,运用+,-,*,\/,()使其最后的值为24,这...
( ( E O E ) O ( E O E ) ) = 24( E O ( ( E O E ) O E ) ) = 24( E O ( E O ( E O E ) ) ) = 24其中E 表示数字,O表示操作符 。 程序的思想就是穷举法,把上面六个式子中的 E 用合法的数字替换,O 用合法的操作符替换,看是否能得出结果。显然计算结果时还要计算字符串...

相似回答