亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

所有 N 的 k 組合數

所有 N 的 k 組合數

Go
白豬掌柜的 2023-05-22 16:05:12
我正在嘗試編寫一個算法,該算法返回一個數組,該數組包含長度為 n 的值 0、1 和 2 的所有可能組合。例如,當 n = 2 時:000102101112202122我已經開始但遠未正確或完成的代碼:func main() {    var results []string    matches := rangeSlice(2)    for a := 0; a < len(matches); a++ {        for b := 0; b < 3; b++ {            matches[(len(matches) - a) - 1] = b            results = append(results, strings.Join(convertValuesToString(matches), ""))        }     }    printResults(results)}非常感謝您的幫助!
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

這只是計數(以k為基數)。您可以這樣做——將連續的整數轉換為以k為底的整數——但這是很多除法和余數,因此您不妨使用更簡單的方法。

  1. 從n 個0開始,然后盡可能多地重復:

  2. 將所有尾隨的k -1 變為0,然后將前一個元素加1。如果沒有前面的元素,你就完成了。

如果有助于理解,你可以試試k =10,這是普通的十進制計數。例如:

  • 3919 → 將尾隨 9 改成 0,1 加 1,結果 3920

  • 3920 → 末尾沒有 9,0 加一,結果 3921

  • ...

  • 3999 → 將三個尾隨的 9 變為 0,將 1 加到 3,結果 4000


查看完整回答
反對 回復 2023-05-22
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

試試這個代碼!


代碼 :


n = int(input("Enter value of n :"))

result=[]

for num1 in range(0,n+1):

    for num2 in range(0,n+1):

        result.append(str(num1)+str(num2))

print(result)

輸出 :


Enter value of n :3                                                                                                    

['00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '30', '31', '32', '33']



查看完整回答
反對 回復 2023-05-22
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

這是 rici 解決方案(計數)的實現。(輸出是二維切片的形式,每個切片都是一個組合。)


要生成您的示例輸出,getCombinations(3, 2).


func getCombinations(base, length int) [][]int {

    // list of combinations always includes the zero slice

    combinations := [][]int{make([]int, length)}

    current := make([]int, length)

    for {

        incrementIndex := length - 1

        // zero trailing <base - 1>'s

        for current[incrementIndex] == base-1 {

            current[incrementIndex] = 0

            incrementIndex--

            // stop when the next digit to be incremented is "larger"

            // than the specified (slice) length

            if incrementIndex < 0 {

                return combinations

            }

        }

        // increment the least significant non-<base - 1> digit

        current[incrementIndex]++

        // copy current into list of all combinations

        combinations = append(combinations, append([]int{}, current...))

    }

}


查看完整回答
反對 回復 2023-05-22
  • 3 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號