计算24点-利用二叉树原理

本文介绍了一个利用二叉树原理解决24点游戏的方法。通过给出的4个自然数,允许使用加、减、乘、除运算及括号改变运算顺序,寻找能得到24的计算路径。文章提供了具体的计算示例,并展示了多轮运算过程,讨论了如何优化避免重复运算的问题。
摘要由CSDN通过智能技术生成

问题描述

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}
			  };
	  
	  //排序方法
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值