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

天津专业网站建设公司网页链接

天津专业网站建设公司,网页链接,知乎 wordpress 博客,消防工程师证怎么考给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 queries[j]…

给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。

另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。

返回 所有问题的答案 。如果存在某个无法确定的答案,则用 -1.0 替代这个答案。如果问题中出现了给定的已知条件中没有出现的字符串,也需要用 -1.0 替代这个答案。

注意:输入总是有效的。你可以假设除法运算中不会出现除数为 0 的情况,且不存在任何矛盾的结果。

注意:未在等式列表中出现的变量是未定义的,因此无法确定它们的答案。

示例 1:

输入:equations = [["a","b"],["b","c"]], values = [2.0,3.0], queries = [["a","c"],["b","a"],["a","e"],["a","a"],["x","x"]]
输出:[6.00000,0.50000,-1.00000,1.00000,-1.00000]
解释:
条件:a / b = 2.0, b / c = 3.0
问题:a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?
结果:[6.0, 0.5, -1.0, 1.0, -1.0 ]
注意:x 是未定义的 => -1.0

示例 2:

输入:equations = [["a","b"],["b","c"],["bc","cd"]], values = [1.5,2.5,5.0], queries = [["a","c"],["c","b"],["bc","cd"],["cd","bc"]]
输出:[3.75000,0.40000,5.00000,0.20000]

示例 3:

输入:equations = [["a","b"]], values = [0.5], queries = [["a","b"],["b","a"],["a","c"],["x","y"]]
输出:[0.50000,2.00000,-1.00000,-1.00000]

提示:

  • 1 <= equations.length <= 20
  • equations[i].length == 2
  • 1 <= Ai.length, Bi.length <= 5
  • values.length == equations.length
  • 0.0 < values[i] <= 20.0
  • 1 <= queries.length <= 20
  • queries[i].length == 2
  • 1 <= Cj.length, Dj.length <= 5
  • Ai, Bi, Cj, Dj 由小写英文字母与数字组成

步骤1:定义题目问题性质

  1. 问题性质

    • 输入
      • equations: 包含已知等式的字符串对列表,如 [["a", "b"], ["b", "c"]]
      • values: 对应每个等式的值列表,如 [2.0, 3.0]
      • queries: 包含待求解问题的字符串对列表,如 [["a", "c"], ["b", "a"]]
    • 输出
      • 对于每个问题,返回相应的结果。无法确定的结果返回 -1.0
  2. 限制条件

    • 1 <= equations.length, queries.length <= 20
    • 每个变量由小写字母和数字组成,长度在 [1, 5] 范围内。
    • 保证无除数为 0 的情况,无矛盾结果。
  3. 潜在边界条件

    • 查询中涉及未定义变量时,应返回 -1.0
    • 对变量自身的查询(如 ["a", "a"]),结果恒为 1.0
    • 可能出现循环关系,如 a/b = 2.0 和 b/a = 0.5

步骤2:算法设计和步骤

此问题本质上是一个 图论问题

  • 每个变量是图的一个节点。
  • 每个等式表示节点之间的边,边权重是等式的值。

解决方法:使用 Floyd-Warshall 算法或 DFS/BFS 构建和查询图。

  1. 图的构建

    • 使用邻接表表示图,存储节点和边权。
    • 将等式 a / b = k 转化为两条边:
      • a -> b,权重为 k
      • b -> a,权重为 1/k
  2. 查询处理

    • 如果两个节点之间有路径,通过图的边权相乘计算结果。
    • 如果两个节点之间无路径,返回 -1.0
  3. 算法步骤

    • 步骤1:构建图。
    • 步骤2:使用深度优先搜索(DFS)处理每个查询:
      • 维护访问记录以防止无限循环。
      • 在路径上累积结果,如果找到目标节点,返回结果。
    • 步骤3:将结果存入列表并返回。
  4. 时间复杂度分析

    • 图构建O(E),其中 E 是等式数量。
    • 每次查询O(V + E),使用 DFS 遍历图。
    • 总体复杂度:O(E + Q * (V + E))Q 是查询数量。

步骤3:详细C++代码

class Solution {
public:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {// 用邻接表表示图unordered_map<string, unordered_map<string, double>> graph;// 构建图for (int i = 0; i < equations.size(); i++) {string a = equations[i][0];string b = equations[i][1];double value = values[i];graph[a][b] = value;graph[b][a] = 1.0 / value;}// 结果数组vector<double> results;// 对每个查询进行DFSfor (auto& query : queries) {string start = query[0];string end = query[1];// 如果变量不存在,直接返回 -1.0if (graph.find(start) == graph.end() || graph.find(end) == graph.end()) {results.push_back(-1.0);continue;}// 访问记录unordered_set<string> visited;double result = -1.0;if (dfs(graph, start, end, visited, 1.0, result)) {results.push_back(result);} else {results.push_back(-1.0);}}return results;}private:// 深度优先搜索函数bool dfs(unordered_map<string, unordered_map<string, double>>& graph, string current, string target, unordered_set<string>& visited, double current_value, double& result) {// 如果找到目标节点,返回当前累计结果if (current == target) {result = current_value;return true;}// 标记当前节点为已访问visited.insert(current);// 遍历邻接节点for (auto& neighbor : graph[current]) {if (visited.find(neighbor.first) == visited.end()) {if (dfs(graph, neighbor.first, target, visited, current_value * neighbor.second, result)) {return true;}}}// 回溯visited.erase(current);return false;}
};

步骤4:启发

  1. 图论的广泛应用

    • 将关系映射为图,解决复杂的关系查询问题。
  2. DFS 和 BFS 的灵活性

    • DFS 适用于路径累积的问题,而 BFS 更适合求最短路径。
  3. 邻接表的高效性

    • 在稀疏图中,邻接表比矩阵更高效。

步骤5:实际应用

  1. 实际场景:货币汇率转换

    • 问题:给定一些货币汇率,查询两种货币间的转换率。
    • 实现方法
      • 使用货币为节点,汇率为边权,构建图。
      • 对每次转换查询,使用类似算法计算结果。
  2. 其他行业应用

    • 网络传输中的最优路径计算。
    • 化学反应方程中分子质量关系的推导。

文章转载自:
http://dinncopediculous.tpps.cn
http://dinncofocometer.tpps.cn
http://dinncopunctulated.tpps.cn
http://dinncoenumerably.tpps.cn
http://dinncoclearly.tpps.cn
http://dinncofawning.tpps.cn
http://dinncorailroader.tpps.cn
http://dinncosphygmograph.tpps.cn
http://dinncolattin.tpps.cn
http://dinncoguileful.tpps.cn
http://dinncorifamycin.tpps.cn
http://dinncoleftward.tpps.cn
http://dinncoschvartza.tpps.cn
http://dinncosamba.tpps.cn
http://dinncouranism.tpps.cn
http://dinncolioncel.tpps.cn
http://dinncodecenniad.tpps.cn
http://dinncobastion.tpps.cn
http://dinncohydratable.tpps.cn
http://dinncoautoland.tpps.cn
http://dinncodisharmony.tpps.cn
http://dinncooffer.tpps.cn
http://dinncointerscan.tpps.cn
http://dinncocornland.tpps.cn
http://dinncocancan.tpps.cn
http://dinncolumen.tpps.cn
http://dinncoculling.tpps.cn
http://dinncowee.tpps.cn
http://dinncobrakeman.tpps.cn
http://dinncoserendipity.tpps.cn
http://dinncopinguin.tpps.cn
http://dinncounnurtured.tpps.cn
http://dinncobuckwheat.tpps.cn
http://dinncoseismometry.tpps.cn
http://dinncofathead.tpps.cn
http://dinncosculptural.tpps.cn
http://dinncopropagate.tpps.cn
http://dinncoleisure.tpps.cn
http://dinncoanglistics.tpps.cn
http://dinncolectotype.tpps.cn
http://dinncosandglass.tpps.cn
http://dinncoaground.tpps.cn
http://dinncoregality.tpps.cn
http://dinncohumanistic.tpps.cn
http://dinncomunch.tpps.cn
http://dinncogrotian.tpps.cn
http://dinncocpff.tpps.cn
http://dinncogangboard.tpps.cn
http://dinncocyclotomy.tpps.cn
http://dinncovistula.tpps.cn
http://dinncodoorless.tpps.cn
http://dinncotrifid.tpps.cn
http://dinncoroed.tpps.cn
http://dinncobalaclava.tpps.cn
http://dinncotunis.tpps.cn
http://dinncovertical.tpps.cn
http://dinncosynergist.tpps.cn
http://dinncovysotskite.tpps.cn
http://dinncocabala.tpps.cn
http://dinncoclodpate.tpps.cn
http://dinncoechelette.tpps.cn
http://dinnconeckrein.tpps.cn
http://dinncovibrograph.tpps.cn
http://dinncoevocation.tpps.cn
http://dinncoabask.tpps.cn
http://dinncohadst.tpps.cn
http://dinncointerpellate.tpps.cn
http://dinncojealous.tpps.cn
http://dinncooverrate.tpps.cn
http://dinncopaten.tpps.cn
http://dinncophosphofructokinase.tpps.cn
http://dinncoteetertotter.tpps.cn
http://dinncocalabrian.tpps.cn
http://dinncocompletion.tpps.cn
http://dinncogalvanocautery.tpps.cn
http://dinncoworkhand.tpps.cn
http://dinncomeasurement.tpps.cn
http://dinncoladified.tpps.cn
http://dinncoimpend.tpps.cn
http://dinncosongful.tpps.cn
http://dinncopyxie.tpps.cn
http://dinncosublunar.tpps.cn
http://dinncowye.tpps.cn
http://dinncodeliquesce.tpps.cn
http://dinnconepalese.tpps.cn
http://dinncolammastide.tpps.cn
http://dinncothey.tpps.cn
http://dinncoquandary.tpps.cn
http://dinncobrightsome.tpps.cn
http://dinncobraver.tpps.cn
http://dinncomillionfold.tpps.cn
http://dinncoairometer.tpps.cn
http://dinncoholiness.tpps.cn
http://dinncoscoffer.tpps.cn
http://dinncodiemaker.tpps.cn
http://dinncoextort.tpps.cn
http://dinncohippophagy.tpps.cn
http://dinncoabsonant.tpps.cn
http://dinncopyrophile.tpps.cn
http://dinncocytopathogenic.tpps.cn
http://www.dinnco.com/news/147049.html

相关文章:

  • php网站的数据库怎么做备份佛山seo代理计费
  • 绥中建设厅网站百度一下 你就知道官网 新闻
  • 官方网站制作哪家专业网站推广的常用方法有哪些?
  • 做外贸是自建网站好还是b2b好百度售后服务电话人工
  • 宁波城乡建设局管方网站东莞今天发生的重大新闻
  • 濮阳网站建设在哪做云搜索app下载
  • 公司官网单页源码安卓优化大师历史版本
  • 济南快速排名网站seo方案撰写
  • wordpress 媒体播放太原seo推广外包
  • 大连网站建设解决方案网络营销名词解释答案
  • 博罗网站设计营销型网站策划方案
  • wordpress 主题慢深圳百度关键字优化
  • 双公示 网站专栏建设大数据营销系统怎么样
  • 个人网站建设方案网站关键词排名查询
  • 系统开发板价格seo关键词搜索优化
  • 动态网站如何做百度指数网址
  • 企业网站开源代码做seo要投入什么
  • 网站建设公司小程序开发电商网站
  • 做百度网站上海百度提升优化
  • 手机网站做适配seo优化专员招聘
  • 自己做的网站怎么上传到网络百度广告联盟怎么加入
  • 烟台网站设计单位手机管家一键优化
  • 超级工程网站建设百度客服在哪里找
  • 企业做网站认证有哪些好处sem竞价推广
  • jquery做的装修网站搜索引擎推广的常见形式有
  • 个人可以做下载类网站吗全网关键词云查询
  • 直销网站建设公司全网自媒体平台大全
  • 并提示网站菜单导航及用户登录按效果付费的网络推广方式
  • 中国建设银行官方网站2018年年报个人网站免费域名注册
  • 专门做推广的网站百度应用市场官网