3
如何按以下規則生成所有模式:如何枚舉模式
#作爲分隔符,{和}表示選擇{和}之間的字符串。
例如:
Input: a string
{a # b} c {d # e {f # g}}
輸出應爲:
a c d
b c d
a c e f
a c e g
如何按以下規則生成所有模式:如何枚舉模式
#作爲分隔符,{和}表示選擇{和}之間的字符串。
例如:
Input: a string
{a # b} c {d # e {f # g}}
輸出應爲:
a c d
b c d
a c e f
a c e g
首先,解析輸入字符串轉換成使用任何標準的分析算法的樹。上面的例子中的樹表現形式會是這樣的(C =串連,S =選擇)
C(S(a,b),C(c,S(d,C(e,S(f,g)))))
現在然後實現遞歸地評估該樹的程序(或表情,你可以稱它爲)和作爲評估任何子表達式的結果返回字符串集。然後評價是這樣的
S(f,g) == "f", "g"
C(e,S(f,g)) == "ef", "eg"
S(d,C(e,S(f,g))) = "d", "ef", "eg"
C(c,S(d,C(e,S(f,g)))) = "cd", "cef", "ceg"
S(a,b) = "a", "b"
C(S(a,b),C(c,S(d,C(e,S(f,g))))) = "acd", "bcd", "acef", "bcef", "aceg", "bceg"
(順便說一下,你缺少從你的榜樣BCEF和建工)
評價規則是:
S(X,Y):評價X (X,Y):評估X和Y並形成從集合X中的一個字符串和集合Y中的一個字符串形成的所有級聯Y