單詞的劃分(動態規劃)

題目描述

有一個很長的由小寫字母組成字符串。為了便于對這個字符串進行分析,需要將它劃分成若干個部分,每個部分稱為一個單詞。出于減少分析量的目的,我們希望劃分出的單詞數越少越好。你就是來完成這一劃分工作的。

輸入

第一行,一個字符串。(字符串的長度不超過300)
第二行一個整數n,表示單詞的個數。(n≤100)
第3~n+2行,每行列出一個單詞。

輸出

一個整數,表示字符串可以被劃分成的最少的單詞數

樣例輸入
realityour
5
real
reality
it
your
our
樣例輸出
2

思路分析

讀入數據:字符串s,n個單詞,單詞存入set容器。

動態規劃。

dp[i]表示前i個字符可以被劃分成的最少的單詞數。

考慮數據規模,初始化dp數組大小為len+1(len=s.size()),各元素大小為1000,但dp[0]=0。

i從0遍歷到len。

對于任意i,如果dp[i]=1000,證明前i個字符沒有最小劃分;否則,遍歷wordset中的單詞,compare找到字符串s從位置i開始能夠匹配的單詞t,更新dp[i+t.size()]=min(dp[i]+1,dp[i+t.size()])。

代碼
#include <bits/stdc++.h>
#define ll long long
using namespace std;
string s,word;
int len,n;
set<string>wordset;
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>s;len=s.size();cin>>n;for(int i=1;i<=n;i++){cin>>word;wordset.insert(word);}vector<int>dp(len+1,1000);dp[0]=0;for(int i=0;i<=len;i++){if(dp[i]==1000)continue;for(string t:wordset){int lt=t.size();if(i+lt<=len&&s.compare(i,lt,t)==0){dp[i+lt]=min(dp[i]+1,dp[i+lt]);}}}cout<<dp[len];return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92172.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言學習筆記——文件

目錄1 文件的概念2 程序文件和數據文件3 二進制文件和文本文件4 流4.1 流的概念4.2 標準流5 文件信息區和文件指針6 處理文件的庫函數6.1 fopen6.2 fclose6.3 fgetc6.4 fputc6.5 fgets6.6 fputs6.7 fscanf6.8 fprintf6.9 fread6.10 fwrite6.11 fseek6.12 ftell6.13 rewind6.14 …

C++語法與面向對象特性(2)

一.inline函數1.inline的基本特性被inline修飾的函數被稱為內聯函數。inline函數設計的初衷是為了優化宏的功能&#xff0c;編譯器會在編譯階段對inline函數進行展開。然而需要注意的是&#xff0c;inline對于編譯器而言是一種建議&#xff0c;它通常會展開一些簡短的&#xff…

Linux中grep命令

Linux 中的 grep 用法詳解grep 是 Linux 中強大的文本搜索工具&#xff0c;用于在文件或輸入流中查找匹配指定模式的行。其基本語法為&#xff1a;grep [選項] "模式" [文件]核心功能基礎搜索在文件中查找包含特定字符串的行&#xff1a;grep "error" log.…

【遙感圖像入門】遙感中的“景”是什么意思?

在遙感成像中,“3景城市影像”和“5景城市影像”中的“景”是遙感數據的基本單位,通常指一次成像過程中獲取的獨立遙感影像塊。這一概念的具體含義需結合技術背景和應用場景理解: 一、“景”的技術定義 單次成像的獨立覆蓋區域 遙感平臺(如衛星、飛機)在特定時間和位置對…

Pytorch-07 如何快速把已經有的視覺模型權重扒拉過來為己所用

下載&#xff0c;保存&#xff0c;加載&#xff0c;使用模型權重 在這一節里面我們會過一遍對模型權重的常用操作&#xff0c;比如&#xff1a; 如何下載常用模型的預訓練權重如何下載常用模型的無訓練權重&#xff08;只下載網絡結構&#xff09;如何加載模型權重如何保存權…

C語言零基礎第9講:指針基礎

目錄 1.內存和地址 2.指針變量和地址 2.1 取地址操作符&#xff08;&&#xff09; 2.2 指針變量 2.3 解引用操作符&#xff08;*&#xff09; 2.4 指針變量的大小 3.指針變量類型的意義 3.1 指針的解引用 3.2 指針 - 整數 3.3 void*指針 4.指針運算 4.1 指針…

013 HTTP篇

3.1 HTTP常見面試題 1、HTTP基本概念&#xff1a; 超文本傳輸協議&#xff1a;在計算機世界里專門在「兩點」之間「傳輸」文字、圖片、音頻、視頻等「超文本」數據的「約定和規范」HTTP常見的狀態碼 [[Pasted image 20250705140705.png]]HTTP常見字段 Host 字段&#xff1a;客戶…

每日面試題20:spring和spring boot的區別

我曾經寫過一道面試題&#xff0c;題目是為什么springboot項目可以直接打包給別人運行&#xff1f;其實這涉及到的就是springboot的特點。今天來簡單了解一下springboot和spring的區別&#xff0c; Spring 與 Spring Boot&#xff1a;從“全能框架”到“開箱即用”的進化之路 …

ClickHouse數據遷移

ClickHouse實例是阿里云上的云實例&#xff0c;想同步數據到本地&#xff0c;本地部署有ClickHouse實例&#xff0c;下面為單庫單表 源實例&#xff1a;阿里云cc-gs5xxxxxxx.public.clickhouse.ads.aliyuncs.com:8123 目標實例&#xff1a;本地172.16.22.10:8123 1、目標實例建…

sqli-labs-master/Less-41~Less-50

Less-41這一關還是用堆疊注入&#xff0c;這關數字型不需要閉合了。用堆疊的話&#xff0c;我們就不爆信息了。我們直接用堆疊&#xff0c;往進去寫一條數據?id-1 union select 1,2,3;insert into users (id,username,password) values(666,zk,180)--看一下插進去了沒?id-1 u…

Tiger任務管理系統-10

十是個很好美好的數字&#xff0c;十全十美&#xff0c;確實沒讓人失望&#xff0c;收獲還是很大的。 溫習了前端知識&#xff0c;鞏固了jQuery&#xff0c;thymeleaf等被忽視的框架&#xff0c;意外將之前的所學所用的知識都連起來了&#xff0c;感覺有點像打通了任督二脈一樣…

ora-01658 無法為表空間 users中的段創建initial區

ora-01658 無法為表空間 users中的段創建initial區 參考1 參考2 參考3 參考4 給用戶新增表空間 alter tablespace system add datafile D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM03.DBF size 5G autoextend on next 10M;設置表空間文件自動擴展 ALTER DATABASE DATAFILE /…

lodash的替代品es-toolkit詳解

一、es-toolkit簡介 es-toolkit 是一款先進的高性能 JavaScript 實用程序庫,體積小巧,并支持強類型注釋,典型特征包括: 提供各種日常實用函數并采用現代實現,例如: debounce、delay、chunk、sum 和 pick 等 設計充分考慮了性能,在現代 JavaScript 環境中實現了 2-3 倍…

【原創】基于gemini-2.5-flash-preview-05-20多模態模型實現短視頻的自動化二創

畫面和解說保持一致&#xff0c;這個模型就是NB[16:57:37] [*] 正在從視頻中提取幀和時長 (頻率: 1.0 幀/秒)... [16:57:55] [] 提取完成。視頻時長: 83.40秒, 提取了 84 幀。 [16:57:55] [*] 使用AI供應商: gemini [16:57:55] [*] 正在進行視覺分析... [16:57:55] L-> 正…

數倉架構 數據表建模

數倉架構 主要用來描述 數據加工的實時鏈路 和 離線鏈路之間的關系,即 流批 關系; lamda 架構, 是兩條路, 實時計算式的, 維護數據的實時性。然后每天經過批計算后, 覆蓋實時的計算結果。 保證數據準確性。 kappa架構, 即流批一體了 數據建模 星型模型是數據倉庫中最…

vscode調試python腳本時無法進入函數內部的解決方法

只需在launch.json配置文件中添加“justMyCode”:false.

Python day37

浙大疏錦行 python day37. 內容&#xff1a; 保存模型只需要保存模型的參數即可&#xff0c;使用的時候直接構建模型再導入參數即可 # 保存模型參數 torch.save(model.state_dict(), "model_weights.pth")# 加載參數&#xff08;需先定義模型結構&#xff09; mod…

ORACLE進階操作

1 事務 事務的任務便是使數據庫從一種狀態變換成為另一種狀態&#xff0c;這不同于文件系統&#xff0c;它是數據庫所特用的。 所有的數據庫中&#xff0c;事務只針對DML&#xff08;增刪改)&#xff0c;不針對select select只能查看其他事務提交或回滾的數據&#xff0c;不能查…

Modbus 的一些理解

疑問&#xff1a;&#xff08;使用的是Modbustcp&#xff09;我在 Modbus slave 上面設置了slave地址為1&#xff0c;位置為40001的位置的值為1&#xff0c;40001這個位置上面的值是怎么存儲的&#xff0c;存儲在哪里的&#xff1f;他們是怎么進行交互的&#xff1f;在Modbus協…

【運動控制框架】WPF運動控制框架源碼,可用于激光切割機,雕刻機,分板機,點膠機,插件機等設備,開箱即用

WPF運動控制框架源碼&#xff0c;可用于激光切割機&#xff0c;雕刻機&#xff0c;分板機&#xff0c;點膠機&#xff0c;插件機等設備&#xff0c;考慮到各運動控制硬件不同&#xff0c;視覺應用功能&#xff08;應用視覺軟件&#xff09;也不同&#xff0c;所以只開發各路徑編…