检查在给定起始索引的情况下是否有可能达到值为 K 的索引
C++ 有一个按位运算符"||"来同时检查多个条件,并且为了查找数组的长度,我们使用 size() 函数。在给定的问题陈述中,我们需要达到数组范围内设置为 0 的第 K 个值,并且起始索引是已知的。如果给定的索引满足数组范围内的第 K 个值,则它将打印 "我们可以从给定的起始索引到达值 k"。
让我们举个例子 -
给定的整数数组为 5,6,0,9,10,长度为 4,起始索引为 2,用作数组的长度。
因此,在数组的第二个索引处找到第 K 个值,以验证可能到达它。
在本文中,我们将在已知起始索引的情况下检查可能到达索引 k。
语法
vector <datatype> vector_variable_name;
参数
vector − 这是关键字。
datatype − 可以是任何原始数据类型,如 int、float 等。
vector_variable name − 提供给向量变量的名称
算法
我们将使用头文件'iostream'和'vector'启动程序。
我们将类名初始化为'K_reach'来定义数据变量和成员。
在类的私有部分,我们正在初始化类型为向量整数的'arr'。
在类的公共部分,我们正在初始化名为'k_reach()' 其中我们将参数作为向量整数类型的'inputArr'传递。然后将'inputArr'的值存储到满足对第 K 个值进行操作的'arr'变量中。
同样在公共部分,我们初始化名为'is_Reach()'的成员函数及其整数类型的参数's'和'k',它们将分别接受来自变量'start_element'和'K'的值(检查主函数)并验证它是否会从起始索引达到第 K 个值。
我们使用两个 if 语句来返回以下内容 -
s >= arr.size() || s < 0 || arr[s] < 0 − 为了找到第 K 个值,它将使用逻辑或"||"检查所有这些条件,如果满足条件,则返回 false,这意味着未找到第 K 个值。
arr[s] == k − 如果这两个变量都匹配,则返回 true,这意味着找到了第 K 个值。
然后我们将'arr[s]'存储到整数变量'x',然后将'arr[s]'设置为'-1',这将检查数组元素的数据类型是否有效。
'isReach()'函数的布尔值将返回以下两个条件 −
is_Reach( s+x, k) − 通过使用它,它将从头开始迭代搜索第 K 个索引值。
is_Reach( s-x, k ) − 通过使用它,它将从最后一个开始迭代搜索第 K 个索引值。
现在我们将启动主函数并声明数组输入。
我们将值 '4' 存储到变量 'start_element' 中,该变量充当索引位置的长度。然后将值'0'存储在变量K中,以从起始索引中找到匹配的值。
我们正在创建类'k_reach'并采用名为A的对象来传递数组元素的参数。
我们将两个参数传递给'is_Reach()'函数,即'start_element'和'K',以验证传递的参数是否为输入。
最后,我们将'pass'应用于if语句以检查第k个值是否从起始索引到达并打印结果。
示例
在这个程序中,我们将在给定起始索引时检查可能到达具有K值的索引。
#include<iostream> #include<vector> using namespace std; class k_reach { private: vector<int> arr; public: k_reach(vector<int> inputArr) { arr = inputArr; } bool is_Reach(int s, int k) { if ( s >= arr.size() || s < 0 || arr[s] < 0 ) { return false; } if ( arr[s] == k ) { return true; } int x = arr[s]; arr[s] = -1; return is_Reach(s+x, k) || is_Reach(s-x, k); } }; int main() { vector<int> arr{2,8,4,2,0,6}; int start_element = 4; // 表示长度位置,即 0 int K = 0; k_reach A(arr); // 这里 A 是对象,arr 是参数 bool pass = A.is_Reach(start_element, K); if (pass) cout << "我们可以从给定的起始索引到达值 k。"; else cout << "我们无法从给定的起始索引到达值 k。"; return 0; }
输出
我们可以从给定的起始索引到达值 k。
结论
我们探讨了给定起始索引时可能到达具有 k 值的索引的概念。我们了解了如何使用按位运算符同时给出两个条件,还了解了 oops 概念对这个问题陈述有何用处。例如,假设我们的 id 充当 K 值,起始索引充当 id 的序列顺序。