博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Word Break(DP)
阅读量:6686 次
发布时间:2019-06-25

本文共 1528 字,大约阅读时间需要 5 分钟。

题目地址:

简单的动态规划问题,采用自顶向下的备忘录方法,代码如下:

1 class Solution { 2 public: 3     bool dictContain(unordered_set
&dict, string s) 4 { 5 unordered_set
::iterator ite = dict.find(s); 6 if(ite != dict.end()) 7 return true; 8 else return false; 9 }10 11 bool wordBreak(string s, unordered_set
&dict)12 {13 // Note: The Solution object is instantiated only once and is reused by each test case.14 if(dict.empty())15 return false;16 const int len = s.size();17 bool canBreak[len]; //canBreak[i] = true 表示s[0~i]是否能break18 memset(canBreak, 0, sizeof(bool)*len);19 for(int i = 1; i <= len; i++)20 {21 if(canBreak[i-1] == false && dictContain(dict, s.substr(0, i)))22 canBreak[i-1] = true;23 24 if(canBreak[i-1] == true)25 {26 if(i == len)return true;27 for(int j = 1; j <= len - i; j++)28 {29 if(canBreak[j+i-1] == false && dictContain(dict,s.substr(i, j)))30 canBreak[j+i-1] = true;31 32 if(j == len - i && canBreak[j+i-1] == true)return true;33 34 }35 }36 37 }38 39 return false;40 }41 42 43 };

注意:在本机调试时,编译器要开启c++11支持,因为#include<unordered_set>是c++11的标准


相关参考资料

微信公共账号“待字闺中”也有关于此题的讨论:请点击 或

【版权声明】转载请注明出处:

 

转载于:https://www.cnblogs.com/TenosDoIt/p/3384853.html

你可能感兴趣的文章
WebPack牛刀小试
查看>>
技巧: iPhone玩游戏手机发烫?有妙招
查看>>
标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)
查看>>
SQL Server 2008高可用×××介绍
查看>>
STP收敛
查看>>
VirtualBox无法进入Win8PE的桌面
查看>>
Cisco3550 交换机 端口限速
查看>>
Linux卸载系统自带的httpd的方法
查看>>
《Oracle从入门到精通》读书笔记第十五章 Oracle数据备份与恢复之二
查看>>
Android安全讲座第九层(二) 内存dump
查看>>
弹出菜单效果
查看>>
SQL常用语句集合(不断更新)
查看>>
centos 5 安装教程注意事项
查看>>
回顾2014,展望2015
查看>>
BIOS基础知识(下)
查看>>
nmom结果记录
查看>>
Iterator 和 Iterable 区别和联系
查看>>
经典SQL语句大全
查看>>
测试LCD1602的显示,显示时间,提示语
查看>>
Linux常用命令
查看>>