哪位大神能给个C++24点游戏的程序?

如题所述

#include <iostream>
using namespace std;
int calcute(int a, int b, char sig);
int calExpress(int a, int b, int c, int d);
char sig[4] = {'+', '-', '*', '/'};
bool flag = true;
int num = 0;
void main()
{
int s[4] ;
cin >> s[0] >> s[1] >> s[2] >> s[3];
for(int i = 0; i < 4; i++)
for(int j =0; j < 4; j++)
for(int k =0; k < 4; k++)
for(int m = 0; m < 4; m++)
if(i!=j && i!=k && i!=m && j!= k && j!=m && k!=m)
if(calExpress(s[i],s[j],s[k],s[m]) == 1)
return;
if(num == 0)
{
cout << "no answer" << endl;
}
}
int calcute(int a, int b, char sig)
{
switch(sig)
{
case '+':
return a+b;
case '-':
return a-b;
case '*':
return a*b;
case '/':
if(a%b!=0)
flag = false;
return a/b;
}
}
int calExpress(int a, int b, int c, int d)
{
int temp1, temp2,temp3;
for(int i = 0; i < 4; i++)
for(int j =0; j < 4; j++)
for(int k =0; k < 4; k++)
{
flag = true;
if(i <=1)
{
if(j <= 1)
{
temp1 = calcute(c,d,sig[k]);
temp2 = calcute(a,b,sig[i]);
temp3 = calcute(temp1,temp2,sig[j]);
if(temp3 == 24 && flag == true)
{
num++;
cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24" << endl;
return 1;
}
}
else
{
temp1 = calcute(b, c, sig[j]);
temp2 = calcute(temp1, d, sig[k]);
temp3 = calcute(a, temp2, sig[i]);
if(temp3 == 24&& flag == true)
{
num++;
cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24"<< endl;
return 1;
}
}
}
else
{
temp1 = calcute(a, b, sig[i]);
if(j <= 1)
{
temp2 = calcute(c, d, sig[k]);
temp3 = calcute(temp1,temp2,sig[j]);
if(temp3 == 24&& flag == true)
{
num++;
cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24"<< endl;
return 1;
}
}
else
{
temp2 = calcute(temp1, c, sig[j]);
temp3 = calcute(temp2, d, sig[k]);
if(temp3 == 24&& flag == true)
{
num++;
cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24"<< endl;
return 1;
}
}
}
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

如何利用C++程序编写24点游戏(有要求)
2007-07-19 c++24点游戏 6 2013-03-28 哪位大神能给个C++24点游戏的程序? 5 更多类似问题 > 为你推荐: 特别推荐 全球首张奥密克戎毒株图公布:新变异株传染性或增强500%? 河南天空坠落不明发光物体,伴随巨大声响,究竟是什么? 古人没有冰箱,也能经常吃到新鲜的食物吗? 不断刷新的圆周率,未来会被算尽...

求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++解决二十四点的问题,具体如下
二十四点游戏时间限制:1000ms内存限制:8196KB描述算二十四点是个很好玩的扑克牌游戏,给4张的A-K的扑克牌,分别代表1-13,随意组合这四张牌,只使用"+-*\/"的四则运算,不使用其他运... 二十四点游戏时间限制:1000 ms 内存限制:8196 KB 描述算二十四点是个很好玩的扑克牌游戏,给4张的A-K的扑克牌,分别代表1-...

24点的算法 C++
关于二十四点游戏的编程思路与基本算法 漫长的假期对于我来说总是枯燥无味的,闲来无聊便和同学玩起童年时经常玩的二十四点牌游戏来。此游戏说来简单,就是利用加减乘除以及括号将给出的四张牌组成一个值为24的表达式。但是其中却不乏一些有趣的题目,这不,我们刚玩了一会儿,便遇到了一个难题——3、6、6、10(其实...

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++)
24点游戏是一个大众化的益智游戏.任意给四张扑克牌(不包括大小王),只能够用加,减,乘,除以及适当的括号连接这四张牌,无论顺序,使计算结果为24,或者宣布根本就是无解的.需要注意的是,每张牌必须运算,并且只能运算一次,J,Q,K可设置为11,12,13.本程序目的就是算出一组牌的所有解(不同形式的式子算不同解),...

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 用合法的操作符替换,看是否能得出结果。显然计算结果时还要计算字符串...

利用c++ 解决 24点 题目。请高手们帮忙!!谢谢
没明白你的意思。

用扑克牌实现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...

c++作业扑克牌24点要求:具体的图形化展示整个游戏。能够随机抽取4张牌...
int set; \/\/ 判断程序中的异常,以便适时退出 void process(char c) { \/\/计算两个数的 + - * \/ 运算 int k=0;double a,b;sign.pop();if (num.top(b)==success){ \/\/判断例外 num.pop();if (num.top(a)==success) { num.pop();k=1;} } if (k) { switch (c) { case...

相似回答