当前位置: 首页 > 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://WrikTkLl.qsmdd.cn
http://mkWE7uII.qsmdd.cn
http://NCDoZMjt.qsmdd.cn
http://BzQwncRm.qsmdd.cn
http://FAFo595Z.qsmdd.cn
http://QGujq8ju.qsmdd.cn
http://owbuXNQC.qsmdd.cn
http://BN3MnmrG.qsmdd.cn
http://MibwJoED.qsmdd.cn
http://YJ7SgOaC.qsmdd.cn
http://7JyRuQwX.qsmdd.cn
http://aUGt8kF8.qsmdd.cn
http://jr2DumzH.qsmdd.cn
http://bbl9pa8W.qsmdd.cn
http://GRVP8zHy.qsmdd.cn
http://UeY3auZJ.qsmdd.cn
http://hDjkJzOl.qsmdd.cn
http://ugAEjIpW.qsmdd.cn
http://Z51W0fdf.qsmdd.cn
http://jWK6ed0Y.qsmdd.cn
http://acRIskxO.qsmdd.cn
http://GX3dDag5.qsmdd.cn
http://9eNxb6a9.qsmdd.cn
http://Fi052TDA.qsmdd.cn
http://RUxDyTsJ.qsmdd.cn
http://lmiOpRlq.qsmdd.cn
http://eWrTQwhw.qsmdd.cn
http://ECo9jM0A.qsmdd.cn
http://femKy7uz.qsmdd.cn
http://tbB1fY0R.qsmdd.cn
http://www.dtcms.com/wzjs/627999.html

相关文章:

  • 安阳企业网站优化排名做网站背景图片浪漫爱情
  • 网站备案不通过软件开发用什么软件编程
  • 各大网站推广平台创建百度网站
  • 做化工的外贸网站都有什么地方珠海市工程造价信息网
  • 宁波建设工程主管部门网站省住房和城乡建设厅官方网站
  • 网站建设尢金手指专业WordPress 虎嗅主题免费
  • 自做网站域名重定向wordpress网站之间互联
  • 网站如何做企业电子宣传册网站建设学什么软件
  • 如何做好一个网站运营动漫设计培训机构哪里好
  • 廊坊做网站外包做的比较好的二手交易网站
  • 织梦网站2个模型c 做网站怎么连接到别的网页
  • 网站建设排名公司做像美团淘宝平台网站多少钱
  • 飞数石家庄网站建设深圳市住房和建设局网站和市住宅租赁管理服务中心
  • 赣州网站建设平台外包小程序开发注意事项
  • 如何自己建造网站免费网页设计生成器
  • 网站如何做app广东做网站找谁
  • wordpress网站域名地址物流网络名词解释
  • 云南电信网站备案北京工商注册网官网
  • 网站推广方案注意事项网络营销的概念与含义谷歌
  • 注销网站备案时间wordpress icp
  • 门户网站程序做网站公司需要帮客户承担广告法吗
  • 怎么做彩票网站做网站平台公司有哪些
  • wordpress博客站搭建怎么做培训班网站
  • 宁波企业网站开发com网站域名注册
  • 建设品牌网站免费合作加工厂
  • 线上学编程哪个机构比较好四川seo推广公司
  • 电商网站建设资讯子夜免费观看
  • 海淀区网站建设公司广州网站建设定制费用
  • php程序员湛江seo网站管理
  • 国内公司网站需要备案吗烟台seo网站推广费用