leetcode 756 金字塔轉換矩陣

2021-09-12 19:44:31 字數 2041 閱讀 8425

現在,我們用一些方塊來堆砌乙個金字塔。 每個方塊用僅包含乙個字母的字串表示,例如 「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解析:無法一直堆到塔尖。

注意, 允許存在三元組

回溯法,對每一種情況進行嘗試。

金字塔共bottom.size()層。每層遞減1。一共(n + 1)*n/2個字元,其中n為bottom.size()。這就需要對最底層之外的所有元素逐層填充。

需要構建乙個map ,key為三元組的前兩元,value為乙個列表,存在三元組的第三元。通過這樣乙個map對金字塔進行回溯填充

python

class solution:

def pyramidtransition(self, bottom, allowed):

from collections import defaultdict

n = len(bottom)

rec = (n + 1) * n // 2 - 1

m = defaultdict(list)

layer = [0]

for i in range(n, 1, -1):

for s in allowed:

def _dfs(bottom, n, index):

nonlocal m

#print(bottom)

if index == rec:

return bool(m[bottom[-2:]])

i = index - layer[n] + layer[n - 1]

last = bottom[i: i + 2]

for s in m[last]:

if _dfs(bottom + s, n + (index + 1 == layer[n + 1]), index + 1):

return true

return false

return _dfs(bottom, 1, n)

c++

class solution ;

for(int i = 1; i < bottom.size(); i++)

layer[i] = layer[i - 1] + bottom.size() - i + 1;

return _dfs(m, bottom, layer, 1, bottom.size(), rec);

}bool _dfs(map>& m, string &s, int layer, int n, int index, int& rec)

return false;

}

};

python 金字塔 Python金字塔

托倫,函式中有幾個小錯誤和乙個邏輯問題print y to a 請注意,此函式生成乙個以z開頭的字串,但您希望將字串以相反的方向連線,而您的另乙個函式print a to y 確實停止了 1位置 例如 還要注意,您需要新增新行字元 n 以獲得一些不錯的輸出。在 我的解決方案是 def print a...

字母金字塔(類同數字金字塔)

問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 aaba abcba abcdba abcdecba 演算法分析 每行包括三個部分內容 若干個空格 正序排列的字母 倒序排列的字幕。使用乙個外部迴圈來處理行,在每乙個行中使用三個內部迴圈 乙個處理空格,乙個以公升序列...

數字金字塔

觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 多組輸入資料 第乙個行包含 r...