在本教程中,我们将讨论一个查找树中祖先-后代关系查询的程序。为此,我们将提供一个有根树和 Q 个查询。我们的任务是找到查询中给定的两个根是否一个是另一个的祖先。示例 现场演示#include using namespace std; //使用 DFS 查找给定节点之间的关系 //给定节点 void performingDFS(vector g[], int u, int parent, int timeIn[], int timeOut[], int& count) { timeIn[u] = count++; for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; ... 阅读更多
在本教程中,我们将讨论一个查找查询的程序,以返回第 L 小数和第 R 小数之间的绝对差。为此,我们将提供一个包含整数和 Q 个查询的数组。我们的任务是找到第 L 小和第 R 小值的索引之间的绝对差。示例 现场演示#include using namespace std; //返回查询的结果 int respondingQuery(pair arr[], int l, int r) { int result = abs(arr[l - 1].second - arr[r - 1].second); return result; } //实现查询 void calcDifference(int givenarr[], int a, int ... 阅读更多
在本教程中,我们将讨论一个查找查询的程序,以更新给定索引并在范围内查找最大公约数。为此,我们将提供一个包含整数和 Q 个查询的数组。我们的任务是找到给定查询的结果(将给定值更新为 X,找到两个给定值之间的最大公约数)。示例 现场演示#include using namespace std; //获取中间索引 int findMiddle(int s, int e) { return (s + (e - s) / 2); } //更新给定索引处的值 void updateIndexValue(int* st, int ss, int se, int i, int diff, int si) ... 阅读更多
在本教程中,我们将讨论一个查找字符串中不同年份总数的程序。为此,我们将提供一个包含“DD-MM-YYYY”格式日期的字符串。我们的任务是找到给定字符串中提到的不同年份的数量。示例 现场演示#include using namespace std; //计算提到的不同年份 int calculateDifferentYears(string str) { unordered_set differentYears; string str2 = ""; for (int i = 0; i < str.length(); i++) { if (isdigit(str[i])) { str2.push_back(str[i]); } if ... 阅读更多
在本教程中,我们将讨论一个查找信号到达字符串中所有位置所需时间的程序。为此,我们将提供一个包含“x”和“o”的字符串。信号从“x”发出,并向两个方向传播,在每个单位时间内更改一个“o”值。我们的任务是计算将整个字符串转换为“x”的完整时间。示例 现场演示#include using namespace std; //计算所需总时间 int findMaximumDuration(string s, int n) { int right = 0, left = 0; int count = 0, maximumLength = INT_MIN; s ... 阅读更多
在本教程中,我们将讨论一个查找两个数的程序,它们的和与积都与 N 相同。为此,我们将提供一个整数值。我们的任务是找到另外两个整数值,它们的积和和等于给定值。示例 现场演示#include using namespace std; //查找 a 和 b 使得 //a*b=N 且 a+b=N void calculateTwoValues(double N) { double val = N * N - 4.0 * N; if (val < 0) { cout
在本教程中,我们将讨论一个查找三元组的程序,使得连接这些三元组的节点数最大。为此,我们将提供一个具有 N 个节点的树。我们的任务是找到一个节点三元组,使得连接它们的路径中覆盖的节点数最大。示例 现场演示#include #define ll long long int #define MAX 100005 using namespace std; vector nearNode[MAX]; bool isTraversed[MAX]; //存储所需的节点 int maxi = -1, N; int parent[MAX]; bool vis[MAX]; int startnode, endnode, midNode; //实现 DFS 以搜索节点 void performDFS(int u, int count) { ... 阅读更多
在本教程中,我们将讨论一个查找由同一矩阵的行主序和列主序相加形成的矩阵的迹的程序。为此,我们将提供两个数组,一个为行主序,另一个为列主序。我们的任务是找到由两个给定矩阵相加形成的矩阵的迹。示例 现场演示#include using namespace std; //计算新矩阵的 calculateMatrixTrace 迹 int calculateMatrixTrace(int row, int column) { int A[row][column], B[row][column], C[row][column]; int count = 1; for (int i = 0; i < row; i++) for ... 阅读更多