使用穷举法,第一部循环四个,然后循环三个,两次循环的不能是上一个循环的数在下一个循环使用,所以下一个循环为getArr(上一个循环,上一个循环的索引), 然后将两个循环产生的+、-、、/、的所有值进行循环作为下一个循环的参数 下一个循环因为上两个循环已经使用了两个参数,所以还剩两个参数 然后再次循环两个参数和上两个循环产生的所有的结果 依次类推 然后是三个循环产生的+、-、、/、和最后一个参数的 +、-、*、/、所以代码arr3直接取第0个就可以了 然后在最终结果中查找有没有包含24的 这种算法包含各种括号即穷举了所有的答案。

let line;

const getCalc = (arg1,arg2)=>{
    let num1 = Number(arg1);
    let num2 = Number(arg2);
    return [num1 + num2,num1 - num2,num1 * num2,num1 / num2]
}

const getArr = (arr,index)=>{
    let newArr = JSON.parse(JSON.stringify(arr));
    newArr.splice(index,1)
    return newArr
}

const getResult = (arr)=>{
    let temp = []
    let result = []
    let answer = [];
    let flag = false
    //     初始化数组 比如数组【7,9,10,9】
    for(let i =0;i<arr.length;i++){
        let arr1 = getArr(arr,i); 
        //获取剩下的三个参数 i == 0 arr1 = [9,10,9]
        for(let j = 0;j< arr1.length;j++){
        //将数组中两个参数进行+、-、*、/、
            temp = getCalc(arr[i],arr1[j])
            //获取的任意两个参数+、-、*、/、的数组
            let arr2 = getArr(arr1,j);
            // [10,9]
            //获取剩下的两个参数
            for(let k = 0;k<arr2.length;k++){
            //循环剩余两个参数
                for(let l =0;l<temp.length;l++){
                //循环前两个的+、-、*、/、的所有值和剩下两个参数进行 +、-、*、/、
                    result = getCalc(temp[l],arr2[k]);
                    //获取三个参数的+、-、*、/、即前两个参数的所有+、-、*、/、的值和第三个参数进行循环
                    let arr3 = getArr(arr2,k);
                    //[9]
                    //获取剩余最后一个参数的值
                    for(let m = 0; m<result.length;m++){
                    //循环前三个的值和最后一个参数进行+、-、*、/、
                      answer = getCalc(result[m],arr3[0]);
                      //最终的答案 ->单次循环的结果并不代表所有的
                        if(answer.includes(24)){
                            flag = true;
                            break;
                        }
                    }
                }
            }
        }
    }
    return flag
}
while(line = readline()){
    let arr = line.split(' ');
    let res = getResult(arr)
    console.log(res)
}