第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請教一個(gè)JavaScript的算法題

請教一個(gè)JavaScript的算法題

胡子哥哥 2019-03-14 14:15:55
有一組數(shù)字[0,1,2,3,4,5,6,7,8,9],現(xiàn)給出一個(gè)數(shù)字,比如3,要求從該組數(shù)字中選出相加等于3的組合(相加的數(shù)字3個(gè)),如0+0+3=3,0+1+2,3個(gè)相加的數(shù)字不能相同(如1+1+1就不行),無順序要求。大概函數(shù)是這樣 fun(數(shù)組,和值,3) ,得到的是組合的個(gè)數(shù).參數(shù)3是相加的數(shù)字個(gè)數(shù),這里規(guī)定是3,如0+0+3,這是3個(gè)數(shù)字
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

遞歸查找符合規(guī)則的元素集合:


部分邏輯是建立在認(rèn)為集合中所有元素都是正數(shù)的基礎(chǔ)上

(() => {

  var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


  console.log(calc(arr, 3, 3)) // 0,1,2

  console.log(calc(arr, 3, 1)) // 3


  function calc (arr, total, count, feed = []) {

    if (count === 1) { // check

      return arr.includes(total) ? feed.concat(total) : null

    } else if (count > 1) { // remove big number

      arr = arr.filter(item => item < total)

    } else if (count === 0) { // maybe too large

      return total === 0 ? feed : null

    } else if (total < 0 || count < 0) { // too large

      return null

    }


    for (let [index, item] of Object.entries(arr)) {

      let result = calc([

        ...arr.slice(0, index),

        ...arr.slice(index + 1)

      ], total - item, count - 1, feed.concat(item))


      if (result) return result

    }


    return null

  }

})()


查看完整回答
反對 回復(fù) 2019-04-01
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

請參考以下 python 代碼實(shí)現(xiàn)


# -*- coding: utf-8 -*-

"""

author: 李毅

"""

from unittest import TestCase



def permutation(array, nsum):

    ''' 假設(shè)數(shù)組元素不重復(fù)。 '''

    # 排序(升序)

    sarray = sorted(array)


    # 找出最大下標(biāo)

    max_idx = len(sarray)

    for i, e in enumerate(sarray):

        if e > nsum:

            max_idx = i

            break


    # 窮舉

    result = []

    for i in range(max_idx):

        for j in range(i, max_idx):

            for k in range(j, max_idx):

                if i == j and j == k:

                    continue

                if sarray[i] + sarray[j] + sarray[k] == nsum:

                    result.append((sarray[i], sarray[j], sarray[k]))

    return result



class Test(TestCase):

    """ 單元測試 """

    def test_permutation(self):

        self.assertEqual(

            permutation(range(10), 3),

            [(0, 0, 3), (0, 1, 2)])

        self.assertEqual(

            permutation(range(10), 2),

            [(0, 0, 2), (0, 1, 1)])

        # 邊界值

        self.assertEqual(

            permutation(range(3), 3),

            [(0, 1, 2)])

        self.assertEqual(

            permutation(range(1, 4), 4),

            [(1, 1, 2)])


查看完整回答
反對 回復(fù) 2019-04-01
  • 3 回答
  • 0 關(guān)注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號