文章目录

  • 1. 题目
  • 2. 解题

1. 题目

现在,我们用一些方块来堆砌一个金字塔。 每个方块用仅包含一个字母的字符串表示。

使用三元组表示金字塔的堆砌规则如下:

对于三元组(A, B, C)“C”为顶层方块,方块“A”、“B”分别作为方块“C”下一层的左、右子块。当且仅当(A, B, C)是被允许的三元组,我们才可以将其堆砌上。

初始时,给定金字塔的基层 bottom,用一个字符串表示。
一个允许的三元组列表 allowed,每个三元组用一个长度为 3 的字符串表示。

如果可以由基层一直堆到塔尖就返回 true ,否则返回 false 。

示例 1:
输入:bottom = "BCD", allowed = ["BCG", "CDE", "GEA", "FFF"]
输出:true
解析:
可以堆砌成这样的金字塔:A/ \G   E/ \ / \
B   C   D因为符合('B', 'C', 'G'), ('C', 'D', 'E') 和 ('G', 'E', 'A') 三种规则。示例 2:
输入:bottom = "AABA", allowed = ["AAA", "AAB", "ABA", "ABB", "BAC"]
输出:false
解析:
无法一直堆到塔尖。
注意, 允许存在像 (A, B, C) 和 (A, B, D) 这样的三元组,其中 C != D。提示:
bottom 的长度范围在 [2, 8]。
allowed 的长度范围在[0, 200]。
方块的标记字母范围为{'A', 'B', 'C', 'D', 'E', 'F', 'G'}。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pyramid-transition-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 暴力回溯穷举即可
class Solution {bool ans = false;vector<char> ch = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
public:bool pyramidTransition(string bottom, vector<string>& allowed) {int n = bottom.size();unordered_set<string> s(allowed.begin(), allowed.end());vector<vector<char>> gold(n, vector<char>(n, '*'));for(int j = 0; j < n; j++) {gold[n-1][j] = bottom[j];//填充最底层的字母}dfs(gold, s, n-2, 0);//从倒数第二行,第0列,开始搜索return ans;}void dfs(vector<vector<char>>& gold, unordered_set<string>& s, int i, int j){if(ans == true)return;char origin = gold[i][j];//记录原始字母for(int k = 0; k < 7; k++)//填入7种可能的字母{string t = string(1, gold[i+1][j])+gold[i+1][j+1]+char('A'+k);// 三元组字符串if(s.find(t) != s.end())//字符串在字典中{if(i == j)//这一行填完了{if(i == 0)ans = true;gold[i][j] = char('A'+k);//填入可能的字母dfs(gold, s, i-1, 0);//下一行,0列gold[i][j] = origin;//恢复现场}else{gold[i][j] = char('A'+k);dfs(gold, s, i, j+1);//当前行,下一列gold[i][j] = origin;}}}}
};

8 ms 9.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 756. 金字塔转换矩阵(回溯)相关推荐

  1. Java实现 LeetCode 756 金字塔转换矩阵(DFS)

    756. 金字塔转换矩阵 现在,我们用一些方块来堆砌一个金字塔. 每个方块用仅包含一个字母的字符串表示. 使用三元组表示金字塔的堆砌规则如下: 对于三元组(A, B, C) ,"C" ...

  2. leetcode 756. Pyramid Transition Matrix | 756. 金字塔转换矩阵(BFS)

    题目 https://leetcode.com/problems/pyramid-transition-matrix/ 题解 BFS,把 pattern 用 map 存起来,然后 bfs 从下向上一层 ...

  3. 756 金字塔转换矩阵

    题目描述: 现在,我们用一些方块来堆砌一个金字塔. 每个方块用仅包含一个字母的字符串表示. 使用三元组表示金字塔的堆砌规则如下: 对于三元组(A, B, C) ,"C"为顶层方块, ...

  4. java 字母金字塔_LeetCode756:金字塔转换矩阵(JAVA题解)

    题目描述 现在,我们用一些方块来堆砌一个金字塔. 每个方块用仅包含一个字母的字符串表示. 使用三元组表示金字塔的堆砌规则如下: 对于三元组(A, B, C) ,"C"为顶层方块,方 ...

  5. 【数据结构与算法】之深入解析“金字塔转换矩阵”的求解思路与算法示例

    一.题目要求 你正在把积木堆成金字塔,每个块都有一个颜色,用一个字母表示,每一行的块比它下面的行少一个块,并且居中. 为了使金字塔美观,只有特定的三角形图案是允许的.一个三角形的图案由两个块和叠在上面 ...

  6. LeetCode实战:螺旋矩阵 II

    题目英文 Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spir ...

  7. Transforms CTM, 转换矩阵

    Quartz转换实现的原理:Quartz把绘图分成两个部分, 用户空间,即和设备无关, 设备空间, 用户空间和设备空间中间存在一个转换矩阵 : CTM 本章实质是讲解CTM Quartz提供的3大功能 ...

  8. 简单递推公式转换矩阵求解

    对于许多递推题目,由于数据范围太大直接循环写会爆掉,这时首先想到的就是矩阵优化,把递推式转换成01矩阵通过快速幂优化. 比如最简单的斐波纳挈,如果n非常大,循环递推肯定是不合适的,那么可以考虑下面的公 ...

  9. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

最新文章

  1. coreldraw水涟漪怎么做_凉皮调料水的做法 调凉皮的调料水怎么做
  2. Intellij IDEA就这样配置,快到飞起!
  3. 【正一专栏】梅西终老巴萨可被裁判吹掉了已进之球
  4. 贪心算法之买卖股票的最佳时机 II
  5. IPNC RDK5.0 make sysall 无法通过问题
  6. 一份从 0 到 1 的 Java 项目实践清单
  7. 【Java基础篇】你真的了解构造器吗?
  8. sourcetree向github推送代码提示密码错误
  9. 【Elasticsearch】Elasticsearch启动索引恢复流程
  10. C盘 html后缀 删,磁盘清理c盘的后果是什么?
  11. Excel取整函数汇总
  12. python在文本添加超链接_python做超链接
  13. c++ 模糊搜索 正则表达式_c++中正则表达式(regex)
  14. 黑马程序员 python 基础版 哪个老师_(看黑马程序员Python基础班视频挺好,犹豫该不该报班?)...
  15. viewpage无限轮播
  16. 那位仁兄或者仁姐能给小弟一个菊花论坛的邀请码
  17. Win11 22H2四个你不知道的隐藏功能
  18. java秒换算成时分秒的形式
  19. 一款全屏展示的流量卡官网单页模板源码
  20. sklearn数据集分割方法汇总

热门文章

  1. ultilize什么意思_ultilize是什么意思
  2. 电子科学与技术相关索引汇总
  3. python连接MySQL数据库搭建简易博客
  4. 解决:pycharm运行程序时在Python console窗口中运行 һ����ң�������1�����
  5. Storm的通信机制
  6. Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
  7. Linux进程全解10——守护进程
  8. Thinkphp带表情的评论回复实例
  9. [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
  10. 循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN