折腾了一个中午写了一个24点的算法,试验了一下效果还不错,这个算法没有啥技巧也就是把全部的可能性给算一遍,代码如下:
/** * @author 百岁(baisui@taobao.com) * @date 2013-3-27 */ public class Test24 { /** * @param args */ public static void main(String[] args) { // 需要计算的24点的四个值放置在一个数组中 int[] param = new int[] { 2, 6, 5, 10 }; for (int i = 0; i < param.length; i++) { for (int j = 0; j < param.length; j++) { if (i == j) { continue; } // System.out.println("i:" + param[i] + ",j:" + param[j]); for (Comput opr : computAry) { int degree2 = opr.comput(param[i], param[j]); for (int k = 0; k < param.length; k++) { Set<Integer> all = new HashSet<Integer>(); all.add(i); all.add(j); all.add(k); if (all.size() < 3) { continue; } for (Comput opr2 : computAry) { int degree3 = opr2.comput(degree2, param[k]); for (int m = 0; m < param.length; m++) { all = new HashSet<Integer>(); all.add(i); all.add(j); all.add(k); all.add(m); if (all.size() < 4) { continue; } for (Comput opr3 : computAry) { if (opr3.comput(degree3, param[m]) == 24) { // System.out.println("i:" + param[i] // + ",j:" + param[j] + ",k=" // + param[k] + ",m=" + param[m]); System.out.println("" + param[i] + opr.getSymbol() + param[j] + opr2.getSymbol() + param[k] + opr3.getSymbol() + param[m]); } } } } } } } } } static abstract class Comput { abstract int comput(int a, int b); abstract char getSymbol(); } static class Plus extends Comput { @Override int comput(int a, int b) { return a + b; } @Override char getSymbol() { return '+'; } } static class Subtraction extends Comput { @Override int comput(int a, int b) { return a - b; } @Override char getSymbol() { return '-'; } } static class Times extends Comput { @Override int comput(int a, int b) { return a * b; } @Override char getSymbol() { return '*'; } } static class Division extends Comput { @Override int comput(int a, int b) { return 0; } @Override char getSymbol() { return '/'; } } final static Comput[] computAry = new Comput[] { new Plus(), new Subtraction(), new Times(), new Division() }; }
相关推荐
总的来说,Java国密算法实现涉及了椭圆曲线加密和哈希函数两大核心概念,通过合理运用这些算法,可以构建安全可靠的加密通信和数据保护系统。在具体编程时,需要对算法原理有深入理解,并熟练掌握相关库的使用,以...
本项目提供了一些推荐算法的Java实现,包括slopeone、SVD(奇异值分解)以及基于物品邻接的SVD(ItemNeighborSVD)。下面我们将详细探讨这些算法及其在Java中的实现。 1. **slopeone**: - Slope One是一种简单的...
【Java MRP算法实现】是基于Java编程语言构建的一个现代物料需求计划(Material Requirements Planning,简称MRP)系统。MRP系统是企业资源规划(ERP)的重要组成部分,它主要用于优化企业的生产计划,确保在正确的...
Java排序算法实现 Java排序算法实现 Java排序算法实现
在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...
在给定的Java项目“KrigingCore_java_克里金插值算法实现”中,开发者提供了一个开源的实现,让我们深入探讨一下克里金插值的基本原理和这个Java实现的关键部分。 **1. 克里金插值原理** 克里金插值由南非矿业...
java版的DBSCAN聚类算法实现,是典型的算法思路实现,遍历未访问的所有点,如果是核心点,就新建一个簇,然后遍历其邻域内的所有点集A,不断扩展,如果簇内的点时核心点,就将其邻域所有点纳入点集A,并从点集移除已...
Java实现k近邻(kNN)算法是机器学习领域中一种基础且重要的算法,主要用于分类和回归问题。kNN算法基于实例的学习,它不预先建立任何模型,而是将新数据分类或预测为与其最近的k个训练样本中最常见的类别。在这个讨论...
JAVA实现扫描线算法的知识点总结 扫描线算法是计算机图形学中的一种常用算法,用于实现多边形的扫描线填充。下面是JAVA实现扫描线算法的知识点总结: 1. 扫描线算法的基本概念: 扫描线算法是从Ymin开始扫描,...
9. **性能优化**:虽然祖冲之算法本身已经设计得很高效,但在Java中实现时,仍需要注意内存管理和计算性能,以适应可能的大规模数据加密需求。 10. **文档编写**:为了方便其他开发者理解和使用你的实现,需要编写...
java实现FCM聚类算法java实现FCM聚类算法java实现FCM聚类算法java实现FCM聚类算法
用java实现银行家调度算法,避免进程死锁!
基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...
5. **排课算法实现**:遗传算法的实现通常包括初始化种群(随机生成初始的课程安排)、计算适应度(根据满足约束的程度评价解的好坏)、选择操作(依据适应度保留优秀解)、交叉操作(交换两个解的部分信息生成新解...
BP算法的JAVA实现,BP神经网络的数学原理及其算法实现,实验使用IRIS数据集,BP神经网络,BP即Back Propagation的缩写,也就是反向传播的意思,顾名思义,将什么反向传播?文中将会解答。不仅如此,关于隐层的含义...
4. **算法实现**:算法的核心逻辑在`interact`方法中实现。首先通过缩放概率使其转换为整数形式;然后计算每个奖品的累积概率;最后生成随机数并与累积概率进行比较,从而得出最终的抽奖结果。 #### 实现细节 - **...
java实现FFT算法,关于快速傅里叶变换(FFT)和傅里叶变换的理论知识这里我就不提了,本文主要讲解FFT实现: 之前想找一个FFT代码,在网上找了很多都是有问题的,下面我完善了一个供大家学习交流;
在Java中实现FP树算法,我们可以按照以下步骤进行: 1. **数据预处理**:首先,我们需要对原始数据进行预处理,将交易数据转换为事务ID和项ID的形式,即每条记录表示一个交易,其中包含交易中出现的所有项。 2. **...
利用JAVA语言编程实现的经典A*算法,复制到eclipse即可运行
`apriori.java`是Apriori算法的Java实现文件。这个文件可能包含了以下关键部分: 1. 数据预处理:从Excel文件中读取数据,转换成项集(如商品列表)。 2. 支持度计算:定义一个函数来计算项集的支持度,这是评估项集...