一道递归问题

本文探讨了如何利用递归解决字符串处理问题,包括在给定字符串中插入空格以匹配单词,以及计算一个字符串能组合出另一个字符串的次数。递归的结束条件和回溯策略是解题关键。
摘要由CSDN通过智能技术生成

题目大意是:给定一个字符串A,然后给定多个单词,然后根据给定的单词在字符串中插入空格,求插入空格最少的组合。例如给定字符串ilikeeverything,给定单词i、like、every、thing、likeeverything。输出为i likeeverything。

#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <string>
#include<algorithm>
#include<functional>
using namespace std;

string result;
int mincount=1000;
int count1 = 0;
bool flag = false;

//注意递归里面最好不要有全局变量,如果返回,注意保存有上次的值。如果想把本次的值传递到下一次递归,
//完全可以利用参数传值传递,而且返回后,值不变(变化的注意复原)。(我只是在结束条件满足时获得值即可,中间的值我又不需知道)
//local:当前查找的起始位置
//resulttemp:暂存结果,因为会有多个解。
//blanknum:插入的空格数量
//str:要插入空格的字符串
//dict:字典(放入的是多个字符串)
void mincut(int local,string resulttemp,int blanknum,const string& str, const set<string>& dict)
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值