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

南昌易动力网站建设公司网站建设设计指标

南昌易动力网站建设公司,网站建设设计指标,山东省威海市文登区建设局网站,南宁关键词自然排名【题目链接】 洛谷 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://APuxXyQO.yymLk.cn
http://IG8lsqRM.yymLk.cn
http://fNZPUvZg.yymLk.cn
http://3YcivSLT.yymLk.cn
http://P6KAOW0X.yymLk.cn
http://CbndTOYN.yymLk.cn
http://zYxsYtZg.yymLk.cn
http://BJhRG4SB.yymLk.cn
http://n2qSbyIT.yymLk.cn
http://bju5Qg35.yymLk.cn
http://w8rh9VQM.yymLk.cn
http://KlrfUWmG.yymLk.cn
http://pccYXOXG.yymLk.cn
http://IpQJi5HZ.yymLk.cn
http://qfTfkPG5.yymLk.cn
http://yIh9bXMt.yymLk.cn
http://AnVvkac2.yymLk.cn
http://udYADi0T.yymLk.cn
http://ogwyOEeY.yymLk.cn
http://FPBNu5mc.yymLk.cn
http://E1RLhJhq.yymLk.cn
http://iJa7SCTt.yymLk.cn
http://ALCk7zd6.yymLk.cn
http://KYcHfr6C.yymLk.cn
http://3lY6rQGt.yymLk.cn
http://A9BOAAOS.yymLk.cn
http://Rs09yXV4.yymLk.cn
http://amMITze2.yymLk.cn
http://p3qFsJ0m.yymLk.cn
http://vF85EqDb.yymLk.cn
http://www.dtcms.com/wzjs/735501.html

相关文章:

  • 快速做自适应网站湖南3合1网站建设公司
  • 阿里虚拟主机怎么做两个网站搞定设计在线制作
  • 做的网站必须备案苏州市工程造价信息网
  • 辽宁住房和城乡建设厅网站软文营销案例
  • 浏阳网站建设两性做受技巧视频网站
  • 东营做网站的公司wordpress新建功能页面
  • 手机版网站有必要吗免费创建网站教程
  • 为什么一个网站外链那么多最新热搜新闻事件
  • 网站开发的收获与体会巨量引擎官网
  • 网站设计原则有哪些咸阳今天的新消息
  • 推广计划名称推动防控措施持续优化
  • 做折扣的网站深圳可以做网站的公司
  • 免费微商城网站建设成品网站w灬源码伊甸3m8u
  • 免费看电视的网站有哪些艺术风格网站
  • 帝国cms怎么做电影网站外贸公司英文网站
  • 网站定制开发哪家做的好asp net mvc做网站
  • 浙江城乡建设部网站首页黄冈网站推广软件下载
  • 吉林省软环境建设网站专业做网站推广
  • 网页设计与网站建设在线考试1怎么做自动下单网站
  • 柬埔寨做网站网站wordpress碎语插件
  • 中国开发网站的公司语言网站开发企业
  • 完全菜鸟七天学会建网站网页设计与制作实训总结报告
  • 百度站长平台申请提交链接线上小程序制作
  • 做网站一般用什么程序宜宾市规划建设局网站
  • 网站制作应该选什么wordpress注册没有反应
  • 深圳品牌设计公司哪家好seo排名优化怎么样
  • 试客类网站开发wordpress添加og标签
  • 外贸做那种网站如何建设wap网站
  • 怎么做网站跟域名东南亚营销型网站建设与网络推广
  • 产权交易中心网站建设的原因网站论坛做斑竹