问题描述
80年代全世界流行一种数字游戏,在中国我们把这种游戏称为“24点”。现在我们
把这个有趣的游戏推广一下:您作为游戏者将得到4个不同的自然数作为操作数,
而您的任务是对这4个操作数进行适当的算术运算,您可以使用的运算只有:+,-,*,/,
您还可以使用()来改变运算顺序。注意:
所有的中间结果必须是整数,所以一些除法运算是不允许的(例如,(2*2)/4是
合法的,2*(2/4)是不合法的)
下面我们给出一个游戏的具体例子:
3,4,5,7
计算:
Step 1: 3.0*4.0=12.0
Step 2: 5.0+7.0=12.0
Step 3: 12.0+12.0=24.0
请写出代码实现
import java.util.Scanner;
public class ErShiSi {
//输入的4个数字:
private float[] inputedNumbers = new float[4];
//算法需要把输入的4个数字按一定规则排序:
private float[] sortedNumbers = new float[4];
//本算法中最重要的数据结构,模拟二叉树,result[0]是根结点,如果得到result[0]的值为24,就算出来了
private float result[] = new float[9];
//创建一棵二叉树
private void clearResult()
{
for (int i = 0; i < 9; i++)
{
result[i] = 0;
}
}
//给二叉树中指定结点赋值:
private void setResult(int index,float value){
result[index] = value;
}
//得到二叉树中指定结点的值:
private float getResult(int index){
return result[index];
}
//排序算法所需要的下标数组:
private int[][] indexs = {
{0,1,2,3},{0,1,3,2},{0,2,1,3}, {0,2,3,1},{0,3,1,2},{0,3,2,1},{1,0,2,3},
{1,0,3,2},{1,2,0,3},{1,2,3,0},{1,3,0,2},{1,3,2,0},{2,0,1,3},{2,0,3,1},
{2,1,0,3},{2,1,3,0},{2,3,0,1},{2,3,1,0},{3,0,1,2},{3,0,2,1},{3,1,0,2},
{3,1,2,0},{3,2,0,1},{3,2,1,0}
};
//排序方法