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

西部虚拟主机网站后台不能访问网站建设

西部虚拟主机网站后台不能访问,网站建设,什么是h5页面设计,网站开发关联下拉列表[NOIP2002 提高组] 字串变换 题目背景 本题不保证存在靠谱的多项式复杂度的做法。测试数据非常的水,各种做法都可以通过,不代表算法正确。因此本题题目和数据仅供参考。 本题为搜索题,本题不接受 hack 数据。关于此类题目的详细内容 题目…

[NOIP2002 提高组] 字串变换

题目背景

本题不保证存在靠谱的多项式复杂度的做法。测试数据非常的水,各种做法都可以通过,不代表算法正确。因此本题题目和数据仅供参考。

本题为搜索题,本题不接受 hack 数据。关于此类题目的详细内容

题目描述

已知有两个字串 A , B A,B A,B 及一组字串变换的规则(至多 6 6 6 个规则),形如:

  • A 1 → B 1 A_1\to B_1 A1B1
  • A 2 → B 2 A_2\to B_2 A2B2

规则的含义为:在 A A A 中的子串 A 1 A_1 A1 可以变换为 $ B_1 , , A_2$ 可以变换为 B 2 ⋯ B_2\cdots B2

例如: A = abcd A=\texttt{abcd} A=abcd B = xyz B=\texttt{xyz} Bxyz

变换规则为:

  • abc → xu \texttt{abc}\rightarrow\texttt{xu} abcxu ud → y \texttt{ud}\rightarrow\texttt{y} udy y → yz \texttt{y}\rightarrow\texttt{yz} yyz

则此时, A A A 可以经过一系列的变换变为 B B B,其变换的过程为:

  • abcd → xud → xy → xyz \texttt{abcd}\rightarrow\texttt{xud}\rightarrow\texttt{xy}\rightarrow\texttt{xyz} abcdxudxyxyz

共进行了 3 3 3 次变换,使得 A A A 变换为 B B B

输入格式

第一行有两个字符串 A , B A,B A,B

接下来若干行,每行有两个字符串 A i , B i A_i,B_i Ai,Bi,表示一条变换规则。

输出格式

若在 10 10 10 步(包含 10 10 10 步)以内能将 A A A 变换为 B B B,则输出最少的变换步数;否则输出 NO ANSWER!

样例 #1

样例输入 #1

abcd xyz
abc xu
ud y
y yz

样例输出 #1

3

提示

对于 100 % 100\% 100% 数据,保证所有字符串长度的上限为 20 20 20

【题目来源】

NOIP 2002 提高组第二题

题目解析

这道题目是一个字符串变换问题,我们需要找出将字符串 A 转换为字符串 B 的最少步骤数,或者判断是否无法在 10 步内完成转换。让我为您分析这道题目并提供解题思路。

题目解析:

  1. 我们有两个字符串 A 和 B,以及一组变换规则。
  2. 每个规则允许我们将字符串中的某个子串替换为另一个子串。
  3. 我们需要找出使用这些规则将 A 转换为 B 的最少步骤数。
  4. 如果无法在 10 步内完成转换,我们需要输出 “NO ANSWER!”。

解题思路:
这个问题可以使用广度优先搜索(BFS)来解决。以下是具体的步骤:

  1. 创建一个队列,初始将字符串 A 加入队列。
  2. 创建一个集合来记录已经访问过的字符串,以避免重复处理。
  3. 创建一个变量来记录当前的步数,初始为 0。
  4. 进行 BFS:
    a. 当队列不为空且步数小于等于 10 时,执行以下操作:
    b. 获取当前队列的大小(当前层的节点数)。
    c. 对当前层的每个节点进行处理:
    • 如果当前字符串等于目标字符串 B,返回当前步数。
    • 否则,尝试应用每个变换规则:
      • 找到可以应用规则的所有位置。
      • 对每个位置,生成新的字符串。
      • 如果新字符串没有被访问过,将其加入队列和已访问集合。
        d. 当前层处理完毕后,步数加 1。
  5. 如果 BFS 结束仍未找到目标字符串 B,输出 “NO ANSWER!”。

这种方法的优点是:

  1. 它保证能找到最少的步骤数(如果存在的话)。
  2. 它能有效地避免重复状态,提高效率。
  3. 它能在到达 10 步时及时停止,避免不必要的计算。

实现这个算法时,我们需要注意以下几点:

  1. 使用 C++ 的 string 类来方便地处理字符串。
  2. 使用 unordered_set 来快速检查字符串是否被访问过。
  3. 使用 queue 来实现 BFS。
#include <iostream>
#include <string>
#include <queue>
#include <unordered_set>
#include <vector>
using namespace std;struct Rule {string from, to;
};int bfs(const string& start, const string& target, const vector<Rule>& rules) {queue<string> q;unordered_set<string> visited;q.push(start);visited.insert(start);int steps = 0;while (!q.empty() && steps <= 10) {int size = q.size();for (int i = 0; i < size; i++) {string current = q.front();q.pop();if (current == target) {return steps;}for (const Rule& rule : rules) {size_t pos = 0;while ((pos = current.find(rule.from, pos)) != string::npos) {string next = current;next.replace(pos, rule.from.length(), rule.to);if (visited.find(next) == visited.end()) {q.push(next);visited.insert(next);}pos += rule.from.length();}}}steps++;}return -1;  // No solution found within 10 steps
}int main() {string A, B;cin >> A >> B;vector<Rule> rules;string from, to;while (cin >> from >> to) {rules.push_back({from, to});}int result = bfs(A, B, rules);if (result != -1) {cout << result << endl;} else {cout << "NO ANSWER!" << endl;}return 0;
}

这个实现使用了上述描述的 BFS 方法。它的主要组成部分是:

  1. Rule 结构体用于存储变换规则。
  2. bfs 函数实现了广度优先搜索算法。
  3. main 函数中,我们读取输入并调用 bfs 函数。

这个解决方案应该能够有效地解决给定的问题。它会找到最少的变换步骤(如果存在的话),或者在无法在 10 步内完成变换时输出 “NO ANSWER!”。

需要注意的是,这个解决方案的时间复杂度可能在最坏情况下相当高,特别是当有很多可能的变换时。然而,考虑到问题的约束(最多 10 步,字符串长度不超过 20),这个解决方案应该能够在合理的时间内处理大多数情况。

http://www.yayakq.cn/news/877307/

相关文章:

  • 京山网站建设网站框架怎么做的
  • 宣传部网站建设策划书网站优化排名查询
  • 网站设计中的js是什么链接点击量软件
  • 重庆企业网站定制开发公司江苏省建设厅网站培训网
  • 福田建网站外包防红跳转短网址生成
  • 怎么看一个网站是html5常德市网站建设
  • 传统网站建设wordpress 小程序源码
  • 网络绿化网站建设哪家专业东莞市住房建设网站
  • 网站如何做标题优化沈阳网站建设索王道下拉
  • 百度网址大全电脑版旧版本深圳关键词优化
  • 江苏海宏建设工程有限公司网站专业做数据的网站
  • 树莓派做网站什么是电商平台怎么加入电商平台
  • 微网站建设的现状地方电商网站
  • 网站站长在哪登陆后台江门网络科技有限公司
  • 家居企业网站建设资讯上海杨浦区网站建设
  • 用模板网站做h5宣传页多少钱云南网app下载
  • 学校网站建设汇报ppt南宁网红景点
  • 上海哪家公司做网站动画视频制作软件app免费
  • 用dw做淘宝网站天津建设厅官方网站
  • 昆明专业网站设计公司幸运28网站建设
  • 甘肃省建设部网站平面设计正规兼职平台
  • 西安做网站的公司电话用手机搭建wordpress
  • 浙江网站建设售后保障资溪县建设局网站
  • 网设台州关键词优化哪家好
  • 哪些网站可以免费申请域名wordpress插件水印
  • 怎么做网站文章优化济南建设局网站公式
  • wordpress图片超链接广州网站建设公司乐云seo598
  • 江西南昌网站建设招标安徽区块链虚拟币网站开发价格
  • 网站怎么做限时抢购共享办公室可以注册公司吗
  • 网站里怎样做点击量查询制作影视宣传片