一个不错的24点计算程序
2005-04-25 12:07
525 查看
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
const double PRECISION = 0.00001;
double number[4];
string expression[4];
bool Search(int n)
{
if (n == 1)
{
if (fabs(number[0] - 24) < PRECISION)
{
cout << expression[0] << endl;
return true;
}
else
{
return false;
}
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '(' + expa + '+' + expb + ')';
number[i] = a + b;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '-' + expb + ')';
number[i] = a - b;
if (Search(n - 1)) return true;
expression[i] = '(' + expb + '-' + expa + ')';
number[i] = b - a;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '*' + expb + ')';
number[i] = a * b;
if (Search(n - 1)) return true;
if (b != 0)
{
expression[i] = '(' + expa + '/' + expb + ')';
number[i] = a / b;
if (Search(n - 1)) return true;
}
if (a != 0)
{
expression[i] = '(' + expb + '/' + expa + ')';
number[i] = b / a;
if (Search(n - 1)) return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
void main()
{
cout <<"Please input four numbers:" <<endl;
for (int i = 0; i < 4; i++)
{
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if (Search(4))
{
cout << "Success." << endl;
}
else
{
cout << "Fail." << endl;
}
}
#include <string>
#include <cmath>
using namespace std;
const double PRECISION = 0.00001;
double number[4];
string expression[4];
bool Search(int n)
{
if (n == 1)
{
if (fabs(number[0] - 24) < PRECISION)
{
cout << expression[0] << endl;
return true;
}
else
{
return false;
}
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
double a, b;
string expa, expb;
a = number[i];
b = number[j];
number[j] = number[n - 1];
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1];
expression[i] = '(' + expa + '+' + expb + ')';
number[i] = a + b;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '-' + expb + ')';
number[i] = a - b;
if (Search(n - 1)) return true;
expression[i] = '(' + expb + '-' + expa + ')';
number[i] = b - a;
if (Search(n - 1)) return true;
expression[i] = '(' + expa + '*' + expb + ')';
number[i] = a * b;
if (Search(n - 1)) return true;
if (b != 0)
{
expression[i] = '(' + expa + '/' + expb + ')';
number[i] = a / b;
if (Search(n - 1)) return true;
}
if (a != 0)
{
expression[i] = '(' + expb + '/' + expa + ')';
number[i] = b / a;
if (Search(n - 1)) return true;
}
number[i] = a;
number[j] = b;
expression[i] = expa;
expression[j] = expb;
}
}
return false;
}
void main()
{
cout <<"Please input four numbers:" <<endl;
for (int i = 0; i < 4; i++)
{
char buffer[20];
int x;
cin >> x;
number[i] = x;
itoa(x, buffer, 10);
expression[i] = buffer;
}
if (Search(4))
{
cout << "Success." << endl;
}
else
{
cout << "Fail." << endl;
}
}
相关文章推荐
- 使用Olami SDK实现一个语音输入数字进行24点计算的iOS程序
- 一个计算24点的程序
- 使用Olami SDK实现一个语音输入数字进行24点计算的iOS程序
- 在linux中用C程序实现读取一个文件中的字符,计算它的个数,并把个数显示在另外一个文件夹内
- 写一个计算圆面积的小程序
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- javascript 网页中实现一个计算当年还剩多少时间的倒数计时程序
- 【Java编程】编写一个计算N个整数平均值的程序
- 一个令人迷惑不解的圆周计算程序
- 编写程序,用一个 for 循环计算1+3+5+7 + ……+99的值,并输出计算结果。
- 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 一个Nodejs的简单计算测试程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 分享一个不错的正则表达式在线测试程序
- 计算一个程序的运行时间
- 一个不错的定时程序,写的很好的
- 编写一个程序计算后缀表达式的值
- 谁能跟我编写一个程序(C语言)题目是编写一个函数计算sum(n)=1+2+3+。。。+n(n&gt;=1)
- 网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示"××年还剩××天××时××分××秒"
- [4.21]编写一个程序,已有若干个学生的数据,包括学号、姓名、成绩、要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。