文章目录

  • 题目描述
  • 分析

题目描述

我们给出了 N 种不同类型的贴纸。每个贴纸上都有一个小写的英文单词。

你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 target。

如果你愿意的话,你可以不止一次地使用每一张贴纸,而且每一张贴纸的数量都是无限的。

拼出目标 target 所需的最小贴纸数量是多少?如果任务不可能,则返回 -1

分析

首先定义f(i,j)表示得到目标字符串中i-j号下标组成的字串所需要的最少的贴纸的数量
则 f(i,j) = min( f(i,k), f(k,j) ); (i < k < j )
由递推关系式可写出代码

#include <iostream>
#include <string>
#include <vector>
#include <string.h>using namespace std;
/***********************************************************************************
我们给出了 N 种不同类型的贴纸。每个贴纸上都有一个小写的英文单词。你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 target。如果你愿意的话,你可以不止一次地使用每一张贴纸,而且每一张贴纸的数量都是无限的。拼出目标 target 所需的最小贴纸数量是多少?如果任务不可能,则返回 -1["with","great"]
***********************************************************************************/
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 0x3f3f3f
const int MAX_LENGTH = 20;int dp[MAX_LENGTH][MAX_LENGTH];/*********************************************************************************** 动态规划* dp[i][j] 表示 i 到 j 的最小贴纸的数量*********************************************************************************/
class CMyclass
{public:int fun(string des){for(int i = 0; i < des.size(); i++){dp[i][i] = 0;}for(int i = 1; i <= des.size(); i++){for(int j = 0; j+i <= des.size(); j++){string s(des.begin()+j,des.begin()+j+i);int k = 0;//若s可以整个被剪出,则最少贴纸为1for(; k < _str.size(); k++){if(strstr(_str[k].c_str(),s.c_str())){dp[j][j+i] = 1;break;}}//若s不能被剪出,则找出中间第k个位置最少的贴纸if(k >= _str.size()){if(s.size() == 1){return -1;}int minNum = INF;dp[j][j+i] = INF;for(k = j; k < j+i; k++){minNum = min(dp[j][k]+dp[k][j+i],minNum);}dp[j][j+i] = minNum;}}}return dp[0][des.size()];}void setStr(){cout << "输入字符串的个数:";int size;cin >> size;for(int i = 0; i < size; i++){string str;cin >> str;_str.push_back(str);}}private:vector<string> _str;
};int main()
{//string str = "abcdefg";/*string tmp(str.begin()+3,str.begin()+5);cout << tmp << endl;*/CMyclass my;string des = "abc";my.setStr();cout << my.fun(des) << endl;return 0;
}

动态规划解决贴纸拼字游戏相关推荐

  1. 拼字游戏 html5,拼字游戏攻略

    拼字游戏是一款趣味性十足的游戏方式会让大家快乐的游戏.游戏十分益智.这款游戏风格独特,画面精美好看,音效逼真动听,操作简单易上手.相信你一定会喜欢的,如果你喜欢的话就加入我们吧,以下是关于这个游戏的一 ...

  2. FB社交游戏2011盘点:街机游戏、拼字游戏、博彩游戏排行前三

    2011年,Facebook上的游戏类型区域多样化,诸如寻宝游戏.赛车游戏.和即时多人战略游戏等游戏类型纷纷登陆Facebook.那么,今年推出的游戏中哪些类型的表现更好呢?通过AppData的数据, ...

  3. Win10解决右下角“拼”字图标

    问题 如下图所示:在win10右下角出现了"拼"字的图标,很不习惯,希望将其去除掉. 方法: Step1 打开win10的语言管理界面,这里可以直接按一下win键,搜索语言就可以找 ...

  4. python之穿越火线游戏代码_Python实现拼字游戏与代码重构

    有位文豪说得好:"看一个作家的水平,不是看他发表了多少文字,而要看他的废纸篓里扔掉了多少." 我觉得同样的理论适用于编程.好的程序员,他们删掉的代码,比留下来的还要多很多.如果你看 ...

  5. Coursera普林斯顿大学算法下Week4:Boggle 拼字游戏

    任务链接:http://coursera.cs.princeton.edu/algs4/assignments/boggle.html 这次任务给的需要实现的方法很少,完成本次任务关键在于理清思路,需 ...

  6. 萌新做点小玩意儿DAY-4 动态规划解决多边形游戏

    还是先简单的介绍一下动态规划的算法思想,跟分治法的思想相似的是把一个比较大的问题分解成若干子问题,而分治法分解出来的子问题都是相同规模有相同的解决办法的,动态规划可以通过空间换时间来解决这些相同的问题 ...

  7. 解决win10右下角输入法出现一个‘拼’字图标

    问题:win10右下角输入法突然出现一个'拼'字图标,如图所示:  解决方法: S1:打开Windows设置,选择 时间和语言: S2:点击右侧语言后,选择添加语言: S3:选择 English(Un ...

  8. 【LeetCode】 贴纸拼词(动态规划)

    691. 贴纸拼词 - 力扣(LeetCode) 一.题目 我们有 n 种不同的贴纸.每个贴纸上都有一个小写的英文单词. 您想要拼写出给定的字符串 target ,方法是从收集的贴纸中切割单个字母并重 ...

  9. 贴纸拼词--动态规划

    贴纸拼词 我们有 n 种不同的贴纸.每个贴纸上都有一个小写的英文单词. 您想要拼写出给定的字符串 target ,方法是从收集的贴纸中切割单个字母并重新排列它们.如果你愿意,你可以多次使用每个贴纸,每 ...

最新文章

  1. 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_map_module实录
  2. python selenium模块使用出错解决,Message: 'geckodriver' executable needs to be in PATH
  3. 实验 5 编写、调试具有多个段的
  4. java property xml,Java开发中读取XML与properties配置文件的方法
  5. SSH 无法启动的原因分析及解决方法
  6. 100行代码实现最简单的基于FFMPEG+SDL的视频播放器
  7. word 代码块_Python+Excel+Word一秒制作百份合同
  8. 2021-02-16
  9. 《韩立刚计算机网络》第二章
  10. 计算机文件夹加密码怎么设置,如何为文件夹设置密码,教您如何设置
  11. 判断图有无环_数读湾区经济潜能:基于大数据分析的环杭州湾大湾区“一体化”发展潜能!...
  12. 20000字干货,数据分析 Pandas 75个高频操作都在这儿了!
  13. MATLAB 数学应用 微分方程 时滞微分方程 dde23
  14. 中产学院源爱妈咪全国首创7大黄金技术桂林游学发布会
  15. CF1379C Choosing flowers
  16. 哈工大18年春软件构造课程讨论题
  17. 北京积分落户需要多少年才能上岸
  18. 湖北公安机关出台10条措施服务民营经济发展
  19. 3an推客CPC、CPM和CPS是什么意思?有什么区别
  20. 玉米社:巧用以下6点,规避短视频剪辑违规侵权问题

热门文章

  1. Java---登录页面及其接口的实现
  2. android 抠图功能,Android抠图工具,天天P图
  3. QStackWidget使用 踩坑
  4. uboot mmc 命令 read write 说明
  5. Windows下打开命令窗口几种方式
  6. 【独家】防不胜防!默认勾选复燃,看刚上市的「同程艺龙」作恶勇气和相悖价值观 || 新芒X...
  7. 面对这样的网络状况我真的醉了
  8. maven项目配置阿里云镜像下载jar包
  9. 海南省计算机作品大赛,海南省教育研究培训院:关于举办第二十届海南省中小学电脑制作活动的通知...
  10. 蕾哈娜首个护肤品牌全球发售;凯悦首旅如家合资首批五家逸扉酒店揭幕 | 美通企业日报...