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

教育平台小程序重庆整合网络营销之整站优化

教育平台小程序,重庆整合网络营销之整站优化,2022磁力链接搜索引擎推荐,厦门市建设保障性住房局网站【题目链接】 洛谷 P1032 [NOIP 2002 提高组] 字串变换 【题目考点】 1. 广搜 2. 双向广搜 【解题思路】 解空间树中每个结点包含的状态为一个字符串s,该结点的子结点中的字符串为字符串s通过变换规则可以变化而成的字符串。求从起始字符串变换为最终字符串的…

【题目链接】

洛谷 P1032 [NOIP 2002 提高组] 字串变换

【题目考点】

1. 广搜
2. 双向广搜

【解题思路】

解空间树中每个结点包含的状态为一个字符串s,该结点的子结点中的字符串为字符串s通过变换规则可以变化而成的字符串。求从起始字符串变换为最终字符串的最少变换步数,需要使用广搜算法。
队列中保存的元素为字符串以及起始字符串变成该字符串的变化步数。
首先将起始字符串入队,每次循环出队一个字符串u,对于每个 a i → b i a_i\rightarrow b_i aibi的变换规则,已知字符串 a i a_i ai的长度为len,枚举字符串u中所有长为len的子串,如果存在子串为 a i a_i ai,则生成将u中该子串 a i a_i ai替换为 b i b_i bi后的字符串t,判断t是否已出现过,如果t未出现过,则标记t已出现过,而后将t加入队列,变化的步数要增加1。(可以使用map或set来标记以及查询一个字符串是否已经出现过。)。
如果出队的字符串u是目标字符串,且步数小于等于10步,则返回变化步数。如果步数大于10步,则不再扩展子结点入队。

本问题也可以使用双向广搜完成,起点和终点字符串同时入队,记录从起点还是从终点出发访问某字符串。如果一个字符串经过变换后得到的字符串是已经能从另一个源头出发变换得到,那么就找到了一条从起点到终点的路径,返回路径长度。

【题解代码】

解法1:广搜

# include<bits/stdc++.h>
using namespace std;
#define N 25
struct Node
{string s;int d;
};
string st, ed, a[N], b[N];
int n;
map<string, bool> vis;
int bfs()
{queue<Node> que;vis[st] = true;que.push(Node{st, 0});while(!que.empty()){string u = que.front().s;int d = que.front().d;que.pop();if(d > 10)//超过10步,没有结果 return -1;if(u == ed)return d;for(int i = 0; i < n; ++i)//看a[i]->b[i] {int len = a[i].length();for(int j = 0; j+len <= u.length(); ++j) if(u.substr(j, len) == a[i]){string t = u;t.replace(j, len, b[i]);if(!vis[t]){vis[t] = true;que.push(Node{t, d+1});} }}}return -1;
}
int main()
{cin >> st >> ed;while(cin >> a[n] >> b[n])//下标从0~n-1 n++;int ans = bfs();if(ans == -1)cout << "NO ANSWER!";elsecout << ans;return 0;
}
2. 双向广搜
#include<bits/stdc++.h>
using namespace std;
string x, y, a[10], b[10];
int n; 
map<string, int> vis, dis;
int bfs()
{queue<string> que;vis[x] = 1, vis[y] = 2;dis[x] = 0, dis[y] = 0;que.push(x);que.push(y);while(!que.empty()){string u = que.front();que.pop();for(int i = 0; i < n; ++i){int len = a[i].length();for(int j = 0; j+len <= u.length(); ++j) if(u.substr(j, len) == a[i]){string t = u;t.replace(j, len, b[i]);if(vis[t] == 0){vis[t] = vis[u];dis[t] = dis[u]+1;if(dis[t] <= 10)que.push(t);}else if(vis[t] != vis[u]){if(dis[t]+dis[u]+1 <= 10)return dis[t]+dis[u]+1;}}}}return -1;
}
int main()
{cin >> x >> y;while(cin >> a[n] >> b[n])n++;int ans = bfs();if(ans == -1)cout << "NO ANSWER!";elsecout << ans;return 0;
}

文章转载自:

http://mSQB2sfa.Lxfyn.cn
http://miGrtQ69.Lxfyn.cn
http://w9fdsoXc.Lxfyn.cn
http://IdSHhdDW.Lxfyn.cn
http://3Ov2v1D8.Lxfyn.cn
http://J2um79oT.Lxfyn.cn
http://YbOBLTtR.Lxfyn.cn
http://iEYc1ri4.Lxfyn.cn
http://fbl1krSz.Lxfyn.cn
http://Fk3Abp7r.Lxfyn.cn
http://alYvbM60.Lxfyn.cn
http://VEhJs330.Lxfyn.cn
http://5XMbVVa2.Lxfyn.cn
http://cmXRjXGh.Lxfyn.cn
http://GQbHsadA.Lxfyn.cn
http://s8ymLLci.Lxfyn.cn
http://aBwEHEPC.Lxfyn.cn
http://DWyQ29B4.Lxfyn.cn
http://BiQnOZwo.Lxfyn.cn
http://wCurEWFa.Lxfyn.cn
http://b04SJObn.Lxfyn.cn
http://N8Ro6Oso.Lxfyn.cn
http://bAWsmXsi.Lxfyn.cn
http://f9AP4pgN.Lxfyn.cn
http://tAof1no0.Lxfyn.cn
http://501JhLmv.Lxfyn.cn
http://mEKyUY52.Lxfyn.cn
http://aVXtNUei.Lxfyn.cn
http://viNCnBJh.Lxfyn.cn
http://BQ6MANSR.Lxfyn.cn
http://www.dtcms.com/wzjs/658983.html

相关文章:

  • 营销相关网站自己做的网站怎么被搜索出来
  • 想做国外的客户做网站怎么弄备案期间关闭网站
  • 伍佰亿书画网网站网站服务公司代买空间有无义务
  • 江门网站制作模板ae做动画教程网站
  • 网站模板英文wordpress 鼠标移动到标题会显示图片
  • 网站开发的摘要有没有做请帖的网站
  • 企业自有网站南宁网站建设制作后台
  • 介绍旅游美食的网站模板做网站如何链接邮箱
  • 川畅互联咨询 网站建设松原网站制作
  • 商用营销型网站建设优化建站wordpress自带的文章图片怎么修改
  • 开的免费网站能赚钱吗网络推广属于什么行业
  • 做导购网站要多少钱企业网站建设规划的基本原则
  • 做的比较好的几个宠物网站送上门卤菜网站要怎么做
  • 海东市网站建设深圳宝安区有哪些街道
  • 怎么开网站平台挣钱关键词拓展工具有哪些
  • 绑定手机网站文件夹优化防控举措
  • 口碑最好的网站建设镇江本地网站
  • 西安有什么好玩的景点seo优化
  • 购物网站模块是什么意思四川整站优化关键词排名
  • 建一个电影网站多大 数据库国内外搜索引擎大全
  • 免费机械网站模板网罗设计网站
  • 江苏缘生源建设工程有限公司网站西安市免费做网站
  • 做网站公司汉狮团队WordPress发表心情
  • 网站怎么做微信支付宝支付网站建设皖icp
  • 高米店网站建设西宁啥时候恢复正常
  • 哪个公司做企业网站好wap网站和app的区别
  • 怎样做直播网站app北京公司注册虚拟地址
  • 家庭电影网站建设flash型网站
  • 做网站好还是做安卓app好新北方app下载
  • 网站哪家做的比较好现在装宽带要多少钱