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

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

查找單詞字謎數量的算法?

查找單詞字謎數量的算法?

Go
胡子哥哥 2022-09-26 15:05:37
所以我知道找到字謎背后的理論,如圖所示。出于我的目的,我需要找到可以從單詞中找到的字謎數量,排除重復項。允許重復,這相當簡單。 具有以下字謎:aabaab aab aba aba baa baa這個數量可以通過從字母的數量計算階乘來找到factorial := 1for i := len(word); i > 0; i-- {     factorial = i * factorial }// aab -> 6但是,如果要排除重復項,則可以將潛在的字謎從6個減少到3個。這方面的一個例子是單詞 ,它有120個組合,但只有60個沒有重復的組合。hello我編寫了自己的算法,該算法制作了字母地圖并返回了地圖的長度,但這也有問題。hello -> 24 (actually 60) helllo -> 24 (actually 120)我怎樣才能做到這一點?
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

如果這些詞的有效性沒有得到任何考慮,那么最好放棄“字謎”這個詞。你只是在問排列。有一個用于解釋重復項的排列公式:


對于一個長度的單詞,取排列的基數,即 。然后,對于單詞中的每個唯一字母,計算該字母的出現次數。對于這些字母中的每一個,取出現次數的階乘,并將排列數除以它。nn!


對于“地獄”:


n = 6

h = 1, e = 1, l = 3, o = 1


Permutations = 6! / (1! x 1! x 3! x 1!)

= 720 / 6

= 120


查看完整回答
反對 回復 2022-09-26
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

法典:


package main


import (

    "bufio"

    "fmt"

    "os"

    "strings"

)


func main() {


    scanner := bufio.NewScanner(os.Stdin)

    fmt.Print("Enter word: ")

    scanner.Scan()

    word := scanner.Text()


    anagrams := factorial(len(word))

    chars := strings.Split(word, "")

    word1 := word

    n := 0


    for i := 0; i < len(word); i++ {

        n = strings.Count(word1, chars[i])

        if n > 0 {

            anagrams = anagrams / factorial(n)

            word1 = strings.Replace(word1, chars[i], "", -1)

        }

    }


    fmt.Println(anagrams)


}


func factorial(n int) int {


    factorial := 1


    for i := n; i > 0; i-- {

        factorial = i * factorial

    }


    return factorial


}

結果:


aab -> 3

helo -> 24

hello -> 60

helllo -> 120


查看完整回答
反對 回復 2022-09-26
?
九州編程

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

您可以使用一些組合。首先計算每個字符的出現次數。然后使用牛頓符號,您將每個字符放在其位置上。例如給定的單詞

aabcdee你有7個地方可以放置單個字母,你有重復的 - 雙a和雙e.
所以你使用這個公式
,你可以放在7個地方中的2個,然后你可以乘以你可以放置b的地方的數量 - 5個剩余地方中的1個。然后在1/4上。然后在1/3上。然后在2/2上。
將這些公式中的每一個相乘都會得到線性時間內的字謎數(如果使用哈希圖進行字母計數)。acde


查看完整回答
反對 回復 2022-09-26
  • 3 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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