JS алгоритм => скорее всего речь идет про "Жадные Алгоритмы"

Ребят есть одна коварная задача, не могу решить до конца, не понимаю как это сделать, если кто понимает помогите окончить код, и желательно с описанием хода мыслей, так как Джун и пытаюсь уловить суть построения алгоритма Задача: есть рандомнный массив простых чисел, этот массив нужно разбить на два массива, так что б их сложение было равное друг другу /2 если он не делится на 2, то максимально приближенное друг к другу

я наборосал макет кода, по ресурсам он +- адекватный, но не во всех случаях корректно считает

код:

const jsonRequestArrNumbers = [3,3,3,7,5]
const objSeporateArr= seporateSum(jsonRequestArrNumbers)
function seporateSum(arr){

    const counterArr = sumArr(arr)/2,
          lengthArr = arr.length-1,
          set1 =[],
          set2 =[]

          const sortArr = arr.sort((a,b)=> {
              return a-b
          })

    if(lengthArr>=1){
        sortArr.forEach(el => {

            const reduceSum1=sumArr(set1),
                  reduceSum2=sumArr(set2)
                  

            if(reduceSum1>=reduceSum2 && reduceSum2 <= counterArr){
                set2.push(el)
            }else if(reduceSum1>=reduceSum2 && reduceSum2>=counterArr){
                set1.push(el)
            }else if(reduceSum1<=reduceSum2 && reduceSum1<=counterArr){
                set1.push(el)
            }else if(reduceSum1<=reduceSum2 && reduceSum1>=counterArr){
                set2.push(el)
            }
        })
    }
    return{
        set1:set1,
        set2:set2
    }
}

function sumArr(arr){
    let res=arr.reduce((sum,prev)=>{
        sum+=prev
        return sum
    },0)
    return res
}

console.log(objSeporateArr)

Ответы (0 шт):