zoukankan      html  css  js  c++  java
  • Java生成多数值二元运算结果集

    看之前大学写过的24点程序中用到的核心计算算法——计算四个值能否计算出24,当时用的c++写的,现用Java重写一遍

    程序实现了多个数值(可重复)每个数值只能运算一次二元运算的条件下获得所有结果集

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class point24 {
    
        public static void main(String[] args){
            float[] calcList = {2,3,4,5};
            calc24(calcList);
        }
        //实现n个数值运算化解为多个n-1数值运算,用递归思想在计算到单个数值的时候递归结束
        static void calc24(float[] calcList){
            if(calcList.length == 1) {//递归出口
                System.out.println(calcList[0]);
            }
            else {
                //双层循环遍历所有当前数组任意两个数进行运算,得到结果与没有进行运算的数值进行下一次运算
                for (int i = 0; i < calcList.length; i++) {
                    for (int j = i+1; j < calcList.length; j++) {
                        float temp1 = calcList[i];
                        float temp2 = calcList[j];
                        ArrayList<Float> resultListFor2Nums = calcFor2Nums(temp1, temp2);
                        for (int n = 0; n < resultListFor2Nums.size(); n++) {
                            float[] nextCalList = calcList;
                            //删除掉数组中第i个值,并把第j个值替换成这两个值的运算结果
                            nextCalList[j] = nextCalList[nextCalList.length-1];
                            nextCalList = Arrays.copyOf(nextCalList,nextCalList.length-1);
                            nextCalList[i] = resultListFor2Nums.get(n);
                            
                            calc24(nextCalList); //递归在这
                        }
                    }
    
                }
            }
        }
        //计算两个值在可以使用+-*/操作时可以得到的所有结果,可以扩展或者减少运算集
        static  ArrayList<Float> calcFor2Nums(float a,float b){
            ArrayList<Float> resultList = new ArrayList<>();
            resultList.add(a + b);
            resultList.add(a - b);
            resultList.add(a * b);
            resultList.add(a / b);
            resultList.add(b - a);
            resultList.add(b / a);
            return resultList;
        }
    
    }
    

      

  • 相关阅读:
    遂宁2017届零诊16题(仅想说明网传答案的不正确)
    当参变分离遇见洛必达
    高考数学九大超纲内容(1)wffc
    给王志红老师构造的函数,想说明搜题软件的解答过程的不严谨!
    记住路径名
    php返回文件路径
    两个字符串合并为一个字符串的各种方法
    global作用域
    二进制字符串的比较
    var_dump — 打印变量的相关信息
  • 原文地址:https://www.cnblogs.com/Jacck/p/8190923.html
Copyright © 2011-2022 走看看