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

1254. 【动态规划】单词的划分

题目描述

在这里插入图片描述

思路

数组定义: dp[i] 表示原字符串的下标0 ~ i 的个数初始化: dp[0] = 0; 不考虑下标是0的情况状态转移方程:枚举字符串数组a[k] (k: 1 ~ n)if (可以连接)dp[i] = min(dp[i], dp[i - a[k].size()] - 1);答案: dp[Ans_Cin.size()]

Code

#include <iostream>
#include <string>
#include <vector>
#include <climits> // 使用INT_MAX
using namespace std;typedef string Word_t; // 定义Word_t为string类型
int main() {// 时间复杂度: o(n^3)Word_t Ans_Cin;cin >> Ans_Cin; // 输入单词int n; // 单词个数cin >> n; // 输入单词个数vector<Word_t> words(n + 1); // 定义单词数组for (int i = 1; i <= n; ++i) cin >> words[i]; // 输入单词/*数组定义: dp[i] 表示原字符串的下标0 ~ i 的个数初始化: dp[0] = 0; 不考虑下标是0的情况状态转移方程:枚举字符串数组a[k] (k: 1 ~ n)if (可以连接)dp[i] = min(dp[i], dp[i - a[k].size()] - 1);答案: dp[Ans_Cin.size()]*/// dp第一步: 初始化vector<int> dp(Ans_Cin.size() + 1, INT_MAX - 10);dp[0] = 0;// dp第二步: 求解问题int Size = Ans_Cin.size(); // 长度for (int i = 1; i <= Size; i++){for (int j = 1; j <= n; j++){int len = words[j].size();if (i - len >= 0){//cout << "i - len = " << i - len << " i - 1 = " << i - 1 << '\n';string TempGetStr = Ans_Cin.substr(i - len, len); // 处理字符串//cout << TempGetStr << endl;if (TempGetStr == words[j]) // 如果相等dp[i] = min(dp[i], dp[i - len] + 1);}}}cout << dp[Size];return 0;
}

相关文章:

  • 动态规划 -- 子数组问题
  • Java大师成长计划之第8天:Java线程基础
  • 农产品园区展示系统——仙盟创梦IDE开发
  • Kotlin与Jetpack Compose的详细使用指南
  • React 第三十六节 Router 中 useParams 的具体使用及详细介绍
  • 力扣hot100——98.验证二叉搜索树
  • Python 数据智能实战 (4):智能用户分群 - 融合行为
  • libevent详解
  • Kubernetes Service 详解
  • 《Ultralytics HUB:开启AI视觉新时代的密钥》
  • 复杂度和顺序表(双指针方法)
  • HOW - 经典详情页表单内容数据填充(基于 Antd 组件库)
  • NLP 分词技术学习
  • Qwen 2.5 VL多模态模型的应用
  • 力扣——20有效的括号
  • 10、属性和数据处理---c++17
  • PCB设计工艺规范(二)基本布局要求
  • 虚拟机centos7安装docker
  • 第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年 4 月 24 日真题
  • 深入掌握CSS背景图片:从基础到实战
  • 五一当天1372对新人在沪喜结连理,涉外婚姻登记全市铺开
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 人社部:一季度全国城镇新增就业308万人,同比增加5万人
  • 外交部官方公众号发布视频:不跪!