当前位置: 首页 > news >正文

leetcode 756(枚举可填字母)

756: 金字塔转换矩阵

基于bottom构造“金字塔”型矩阵

int n=bottom.size(); vector<string> pyramid(n); for(int i=0;i<n-1;i++) pyramid[i].resize(i+1); pyramid[n-1]=move(bottom);

为了快速知道 AA→[B,C] 的对应关系,可以把 allowed 用哈希表(或者二维数组)分组,把 allowed[i] 前两个字母对应的第三个字母,记录在一个列表中,方便后续遍历。

string base[6][6]; //三角形底部两个字母 -> [三角形顶部字母] for(auto& a:allowed) base[a[0]-'A'][a[1]-'A']+=a[2];

优化:减少重复搜索(剪枝)

class Solution { public: bool pyramidTransition(string bottom, vector<string>& allowed) { string base[6][6]; //三角形底部两个字母 -> [三角形顶部字母] for(auto& a:allowed) base[a[0]-'A'][a[1]-'A']+=a[2]; int n=bottom.size(); vector<string> pyramid(n); for(int i=0;i<n-1;i++) pyramid[i].resize(i+1); pyramid[n-1]=move(bottom); unordered_set<string> vis; //访问标记 //现在准备填(i,j)这个格子,返回能否填完所有格子(从下往上填,每行从左到右填) auto dfs=[&](this auto&& dfs,int i,int j)->bool{ if(i<0) return true; //所有格子都已填完 if(j==i+1){ if(!vis.insert(pyramid[i]).second) return false; return dfs(i-1,0); } //枚举(i,j)填什么字母,这取决于(i+1,j)和(i+1,j+1)填的字母 for(char top:base[pyramid[i+1][j]-'A'][pyramid[i+1][j+1]-'A']){ pyramid[i][j]=top; //遍历已知底下两个字母时上方allowed的字母(base中) if(dfs(i,j+1)) return true; } return false; }; //从倒数第二行开始填 return dfs(n-2,0); } };
http://www.jsqmd.com/news/163147/

相关文章:

  • NVIDIA Profile Inspector终极指南:从基础配置到专业调优的完整教程
  • Docker健康检查确保PyTorch服务持续可用
  • [C++][正则表达式]常用C++正则表达式用法
  • Realtek音频设备未识别的解决方案核心要点
  • Zotero插件商店:打造个性化文献管理生态的智能平台
  • Blender MMD Tools完全手册:从零开始掌握免费插件安装与实战技巧
  • PyTorch循环神经网络RNN实战(GPU加速训练)
  • Markdown绘制神经网络结构图:配合PyTorch讲解模型
  • Jupyter Notebook主题美化提升PyTorch开发体验
  • 将PyTorch模型部署为REST API(基于CUDA加速)
  • PyTorch模型预测接口封装为gRPC服务(GPU后端)
  • vivado安装教程2018入门必看:适用于ISE转向用户
  • 自动驾驶车载计算平台低功耗架构设计入门必看
  • MAA游戏自动化神器:重新定义你的游戏体验
  • Jupyter Notebook保存PyTorch训练结果的最佳实践
  • 一文说清工业自动化中的硬件电路布局规范
  • 使用Logrotate管理PyTorch长时间训练日志
  • 3分钟轻松搞定GitHub界面汉化:零基础浏览器插件完美方案
  • 3分钟掌握UML绘图:零安装在线编辑器的终极指南
  • ncmdump:3步解锁加密音乐,让网易云音频重获自由
  • Jupyter Notebook转Python脚本用于PyTorch批量训练
  • 仿写文章prompt:xnbcli工具使用指南
  • NS-USBLoader深度使用指南:从基础操作到高阶应用
  • 如何快速优化显卡性能:新手也能掌握的完整调优指南
  • CefFlashBrowser:轻松突破网站限制的自定义版本Flash浏览器
  • xnbcli:星露谷物语XNB文件处理终极指南
  • Docker Swarm部署大规模PyTorch计算任务
  • PyTorch动态图机制优势解析(相比静态图框架)
  • 3分钟上手Python自动化抢票工具:告别手速极限挑战
  • easy file sharing server漏洞渗透测试和kali中生成被控端