問題描述:
現在,我們用一些方塊來堆砌乙個金字塔。 每個方塊用僅包含乙個字母的字串表示,例如 「z」。
使用三元組表示金字塔的堆砌規則如下:
(a, b, c) 表示,「c」為頂層方塊,方塊「a」、「b」分別作為方塊「c」下一層的的左、右子塊。當且僅當(a, b, c)是被允許的三元組,我們才可以將其堆砌上。
初始時,給定金字塔的基層 bottom,用乙個字串表示。乙個允許的三元組列表 allowed,每個三元組用乙個長度為 3 的字串表示。
如果可以由基層一直堆到塔尖返回true,否則返回false。
示例 1:
輸入: bottom = "xyz", allowed = ["xyd", "yze", "dea", "fff"]
輸出: true
解析:可以堆砌成這樣的金字塔:
a/ \
d e
/ \ / \
x y z
因為符合('x', 'y', 'd'), ('y', 'z', 'e') 和 ('d', 'e', 'a') 三種規則。
示例 2:輸入: bottom = "xxyx", allowed = ["***", "xxy", "xyx", "xyy", "yxz"]
輸出: false
解析:無法一直堆到塔尖。
注意, 允許存在三元組(a, b, c)和 (a, b, d) ,其中 c != d.
注意:bottom 的長度範圍在 [2, 8]。
allowed 的長度範圍在[0, 200]。
方塊的標記字母範圍為。
思路分
析:\color
思路分析
:首先我們需要知道每構造一次,bottom的長度減一,當bottom的長度 == 1時說明構造成功了。而每次構造都是按順序取出bottom中的兩個字母,確定第三個字母(『a』到『g』一共7種可能),這時我們再去判斷當前三元組是否在規則中,如果在規則中我們就繼續構造。當我們把bottom構造得到下一層nextstr,再使用nextstr構造下一層…直到bottom的大小 == 1。
class
solution
//nowstr是正在訪問的層,nextstr是正在構造的下一層,myallowed存放所有金字塔的堆砌規則
leetcode 756 金字塔轉換矩陣
現在,我們用一些方塊來堆砌乙個金字塔。每個方塊用僅包含乙個字母的字串表示,例如 z 使用三元組表示金字塔的堆砌規則如下 a,b,c 表示,c 為頂層方塊,方塊 a b 分別作為方塊 c 下一層的的左 右子塊。當且僅當 a,b,c 是被允許的三元組,我們才可以將其堆砌上。初始時,給定金字塔的基層bot...
227 金字塔轉換矩陣
題目描述 現在,我們用一些方塊來堆砌乙個金字塔。每個方塊用僅包含乙個字母的字串表示,例如 z 使用三元組表示金字塔的堆砌規則如下 a,b,c 表示,c 為頂層方塊,方塊 a b 分別作為方塊 c 下一層的的左 右子塊。當且僅當 a,b,c 是被允許的三元組,我們才可以將其堆砌上。初始時,給定金字塔的...
python 金字塔 Python金字塔
托倫,函式中有幾個小錯誤和乙個邏輯問題print y to a 請注意,此函式生成乙個以z開頭的字串,但您希望將字串以相反的方向連線,而您的另乙個函式print a to y 確實停止了 1位置 例如 還要注意,您需要新增新行字元 n 以獲得一些不錯的輸出。在 我的解決方案是 def print a...