4个数四则运算为24(java程序设计)
来源:互联网 发布:php电子商城源码 编辑:程序博客网 时间:2024/05/30 04:17
/*此程序原来我用C++的一种方法写了的,那种方法是比较全面的输出所有的可能,不过很有点复杂,当时写出来很有自信的,不过那种方法不好,后来的算法设计老师给我讲了一种算法,当时觉得没意思,就没再写了,我现在想学用JAVA写程序,这是我写的第一个比较全的JAVA程序,就用那种方法写了,代码如下,算法就不用介绍了,看看应该很清楚,如有疑问,给小弟留言啊*/
import java.io.*;
public class NNumCalculateToM {
final static double PRECISION = 1E-6;
final static int NUM = 4;
final static int RESULT = 24;
static double number[];
static String[] expression;
static boolean circule(int n)
{
if(n == 1)
{
if(Math.abs(number[0] - RESULT) < PRECISION)
{
System.out.println(expression[0]);
return true;
}
else
{
return false;
}
}
for(int i=0; i<n; ++i)
for(int j=i+1; j<n; ++j)
{
double numi,numj;
String expi,expj;
numi = number[i];
numj = number[j];
number[j] = number[n-1];
expi = expression[i];
expj = expression[j];
expression[j] = expression[n-1];
//加的处理
if(n > 2)
expression[i] = "(" + expi + "+" + expj + ")";
else
expression[i] = expi + "+" + expj;
number[i] = numi + numj;
if(circule(n-1))
return true;
//减的处理,有两种情况expi-expj,expj-expi
if(n > 2)
expression[i] = '(' + expi + '-' + expj + ')';
else
expression[i] = expi + '-' + expj;
number[i] = numi - numj;
if(circule(n-1))
return true;
if(n > 2)
expression[i] = '(' + expj + '-' + expi + ')';
else
expression[i] = expj + '-' + expi;
number[i] = numj - numi;
if(circule(n-1))
return true;
//乘的处理
expression[i] = expi + "*" + expj;
number[i] = numi * numj;
if(circule(n-1))
return true;
//除的处理,有两种情况expi/expj,expj/expi
if(numj > PRECISION)
{
expression[i] = expi + '/' + expj;
number[i] = numi / numj;
if(circule(n-1))
return true;
}
if(numi > PRECISION)
{
expression[i] = expj + '/' + expi;
number[i] = numj / numi;
if(circule(n-1))
return true;
}
//恢复数组
number[i] = numi;
number[j] = numj;
expression[i] = expi;
expression[j] = expj;
}
return false;
}
static void input() throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<NUM; ++i)
{
System.out.println("输入第" + (i+1) + "个数:");
expression[i] = reader.readLine();
number[i] = Double.parseDouble(expression[i]);
}
}
public static void main(String[] args)
{
// TODO 自动生成方法存根
number = new double[NUM];
expression = new String[NUM];
try
{
input();
}
catch(Exception e)
{
System.out.println(e.toString());
}
if(circule(NUM))
{
System.out.println("找到了上述的匹配式子!");
}
else
{
System.out.println("找不出匹配的式子!");
}
}
}
- 4个数四则运算为24(java程序设计)
- java 四则运算
- 四则运算(Java)
- java 四则运算
- java四则运算
- java--四则运算
- java-- 四则运算
- JAVA四则运算
- 四则运算 java
- java调用matlab实例(以四则运算为例)
- 4个数和为0
- 4个数和为0
- java求复数四则运算
- JAVA实现四则运算
- 四则运算JAVA实现
- java写的四则运算
- Java 四则运算表达式求解
- JAVA大数四则运算
- 开始写Sphere3d
- 在Ubuntu上iPhone开发教程-1
- mysql tips
- JavaScript 中小数和大整数的精度丢失
- 数据库优化设计注意事项
- 4个数四则运算为24(java程序设计)
- android开发环境搭建
- 项目经理修炼(7)
- 自定义IE地址栏图标
- Zend Studio 实用快捷键一览表本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2009/0618/6532.php
- Android - 资源的定义和引用
- devfs、sysfs、udev
- 程序员的你
- linux进程控制-exit()