can是什么意思中文:24点算法
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 13:45:04
#include
#include
#include
#include
#include
using namespace std;
typedef vector
const double PRECISION = 1E-6;
const int COUNT_OF_NUMBER = 5;
const int NUMBER_TO_BE_CAL = 24;
double number[COUNT_OF_NUMBER];
string expression[COUNT_OF_NUMBER];
void search(int n, results *vrel)
{
if (n == 1)
{
if ( fabs(number[0] - NUMBER_TO_BE_CAL) <= PRECISION ) //对于除法,要小心小数的精确位数
vrel->push_back(expression[0]);
}
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]; //递归之后,n比以前小一位,所以可以不停向前赋值
expa = expression[i];
expb = expression[j];
expression[j] = expression[n - 1]; //递归之后,n比以前小一位,所以可以不停向前赋值
expression[i] = '(' + expa + '+' + expb + ')'; //加法不需要分顺序
number[i] = a + b;
search(n-1, vrel);
expression[i] = '(' + expa + '-' + expb + ')'; //减法应该分顺序,减数以及被减数
number[i] = a - b;
search(n-1, vrel);
expression[i] = '(' + expb + '-' + expa + ')'; //减法应该分顺序,减数以及被减数
number[i] = b - a;
search(n-1, vrel);
expression[i] = '(' + expa + '*' + expb + ')'; //乘法不需要分顺序
number[i] = a * b;
search(n-1, vrel);
if (b != 0)
{
expression[i] = '(' + expa + '/' + expb + ')'; //除法应该分顺序,除数以及被除数
number[i] = a / b;
search(n-1, vrel);
}
if (a != 0)
{
expression[i] = '(' + expb + '/' + expa + ')'; //除法应该分顺序,除数以及被除数
number[i] = b / a;
search(n-1, vrel);
}
number[i] = a; //这4句语句是为了防止如果上面几种可能都失败了的话,
number[j] = b; //就把原来的赋值撤消回去,以无干扰的正确的进入到下一次
expression[i] = expa; //for循环队列中。
expression[j] = expb; //
}
}
}
int main()
{
cout<<"Please input "<< COUNT_OF_NUMBER << " value of Cards:\n";
for (int i = 0; i < COUNT_OF_NUMBER; i++)
{
char buffer[20];
cout<<"The "< cin >> number[i];
sprintf(buffer, "%d", (int)number[i]);
expression[i] = buffer;
}
cout << endl;
results vrel;
search(COUNT_OF_NUMBER, &vrel);
if (vrel.empty())
{
cout << "Fail." << endl;
}
else
{
int i,count = 0;
for (i = 0; i < vrel.size(); i++)
{
++count;
cout << vrel[i] << "\t\t";
if (count % 3 == 0)
cout << endl;
}
cout << "\nSuccess." << endl;
cout << "The sum of the ways = " << count <
return 0;
}
24点算法诀窍
24点的算法问题
求24点算法思路(非穷举算法)
求2个24点算法
解释这个24点程序算法!急!
求教24点游戏的算法(最好用C++)
对比并行算法和串行算法的异同点
给我说下这个24点程序的算法,急
谁能用通俗的语言告诉我 24点的算法呀
如何将8点数据内插至16点??算法。
不常规算法算24
求算法: 点集的外包凸多边形生成代码
请问基于N/4点的FFT算法可以做512点的数据吗?
再来不常规算法算24
超级不常规算法算24
已知三个2D点p1,p2,p3,写出算法判断点p1是否出于p1,p2,p3所形成的三角形内部,写思路,考虑算法复杂度
用点坐标计算n变形面积的公式或算法
那位大虾说下十进制,十六进制,八进制的算法,说详细点哈!
梦幻西游里,什么算法宠,什么算攻宠,具体点谢谢了
在接触数据结构的Prim算法,向大家请教一下什么是跳点可以吗?
拉格朗日插值算法
一道算法
简便算法
什么是算法