24点算法 有谁知道24点的具体算法。能否给出代码来参考一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private const double Precision = 1E-6; // 精度private bool fSearchExpression(double[] ANumbers, string[] AExpressions, int ALevel, int ADest, List<string> AResults){ bool Result = false; if ((ALevel <= 1) && (Math.Abs(ANumbers[0] - ADest) <= Precision)) { AResults.Add(AExpressions[0]); return true; } for (int i = 0; i < ALevel; i++) for (int j = i + 1; j < ALevel; j++) { double A = ANumbers[i]; double B = ANumbers[j]; ANumbers[j] = ANumbers[ALevel - 1]; string vExpA = AExpressions[i]; string vExpB = AExpressions[j]; AExpressions[j] = AExpressions[ALevel - 1]; AExpressions[i] = '(' + vExpA + '+' + vExpB + ')'; ANumbers[i] = A + B; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; AExpressions[i] = '(' + vExpA + '-' + vExpB + ')'; ANumbers[i] = A - B; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; AExpressions[i] = '(' + vExpB + '-' + vExpA + ')'; ANumbers[i] = B - A; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; AExpressions[i] = '(' + vExpA + '*' + vExpB + ')'; ANumbers[i] = A * B; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; if (B != 0) { AExpressions[i] = '(' + vExpA + '/' + vExpB + ')'; ANumbers[i] = A / B; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; } if (A != 0) { AExpressions[i] = '(' + vExpB + '/' + vExpA + ')'; ANumbers[i] = B / A; if (fSearchExpression(ANumbers, AExpressions, ALevel - 1, ADest, AResults)) Result = true; } ANumbers[i] = A; ANumbers[j] = B; AExpressions[i] = vExpA; AExpressions[j] = vExpB; } return Result;}private bool SearchExpression(List<string> AResults, int ADest, params int[] ANumbers){ double[] vNumbers = new double[ANumbers.Length]; string[] vExpressions = new string[ANumbers.Length]; for (int i = 0; i < ANumbers.Length; i++) { vNumbers[i] = ANumbers[i]; vExpressions[i] = ANumbers[i].ToString(); } return fSearchExpression(vNumbers, vExpressions, ANumbers.Length, ADest, AResults);}private void button1_Click(object sender, EventArgs e){ List<string> vExpressions = new List<string>(); SearchExpression(vExpressions, 24, 4, 4, 7, 7); foreach (string vExpression in vExpressions) textBox1.AppendText(vExpression + "\r\n");} List<string>这个代表什么意思。。初学者 URL中的参数怎么加密 C#实用代码 关于.NET中抽象工厂模式的问题 请教前辈,三层架构关于类的封装。 DataGridView.AllowUserToOrderColumns 响应的事件在哪? @@@@在线求教新手问题··· 工厂模式使用中产生的疑问。 如何搜索文件中的內容 高手请帮忙写个函数!!!!!!! 请问如果不装VS.net能用别的方法运行和调试C#程序吗? socket相关问题 急求一次复制多个联合表并插入数据库的方法!
private bool fSearchExpression(double[] ANumbers, string[] AExpressions,
int ALevel, int ADest, List<string> AResults)
{
bool Result = false;
if ((ALevel <= 1) && (Math.Abs(ANumbers[0] - ADest) <= Precision))
{
AResults.Add(AExpressions[0]);
return true;
}
for (int i = 0; i < ALevel; i++)
for (int j = i + 1; j < ALevel; j++)
{
double A = ANumbers[i];
double B = ANumbers[j];
ANumbers[j] = ANumbers[ALevel - 1];
string vExpA = AExpressions[i];
string vExpB = AExpressions[j];
AExpressions[j] = AExpressions[ALevel - 1];
AExpressions[i] = '(' + vExpA + '+' + vExpB + ')';
ANumbers[i] = A + B;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
AExpressions[i] = '(' + vExpA + '-' + vExpB + ')';
ANumbers[i] = A - B;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
AExpressions[i] = '(' + vExpB + '-' + vExpA + ')';
ANumbers[i] = B - A;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
AExpressions[i] = '(' + vExpA + '*' + vExpB + ')';
ANumbers[i] = A * B;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
if (B != 0)
{
AExpressions[i] = '(' + vExpA + '/' + vExpB + ')';
ANumbers[i] = A / B;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
}
if (A != 0)
{
AExpressions[i] = '(' + vExpB + '/' + vExpA + ')';
ANumbers[i] = B / A;
if (fSearchExpression(ANumbers, AExpressions,
ALevel - 1, ADest, AResults)) Result = true;
}
ANumbers[i] = A;
ANumbers[j] = B;
AExpressions[i] = vExpA;
AExpressions[j] = vExpB;
}
return Result;
}private bool SearchExpression(List<string> AResults, int ADest, params int[] ANumbers)
{
double[] vNumbers = new double[ANumbers.Length];
string[] vExpressions = new string[ANumbers.Length];
for (int i = 0; i < ANumbers.Length; i++)
{
vNumbers[i] = ANumbers[i];
vExpressions[i] = ANumbers[i].ToString();
}
return fSearchExpression(vNumbers, vExpressions, ANumbers.Length, ADest, AResults);
}private void button1_Click(object sender, EventArgs e)
{
List<string> vExpressions = new List<string>();
SearchExpression(vExpressions, 24, 4, 4, 7, 7);
foreach (string vExpression in vExpressions)
textBox1.AppendText(vExpression + "\r\n");
}
这个代表什么意思。。初学者