检查从给定起始索引是否可以到达值为 K 的索引
C++ 具有按位运算符“||”用于同时检查多个条件,并使用 size() 函数查找数组的长度。在给定的问题陈述中,我们需要到达数组范围内设置为 0 的第 K 个值,并且起始索引已知。如果给定索引满足数组范围内的第 K 个值,则它将打印“我们可以从给定的起始索引到达值 k”。
让我们来看一个例子:
给定的整数数组为5,6,0,9,10,长度为 4,起始索引为2,用作数组的长度。

因此,在数组的第二个索引处找到第 K 个值,这验证了对其的可能到达。
在本文中,我们将检查当起始索引已知时到达索引 k 的可能性。
语法
vector <datatype> vector_variable_name;
参数
vector − 这是关键字。
数据类型 − 这可以是任何原始数据类型,例如 int、float 等。
vector 变量名 − 为 vector 变量提供的名称
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
算法
我们将使用名为‘iostream’和‘vector’的头文件开始程序。
我们将类名初始化为‘K_reach’以定义数据变量和成员。
在类的私有部分,我们初始化类型为 vector 整数的‘arr’。
在类的公共部分,我们初始化名为‘k_reach()’的构造函数,其中我们将参数作为类型为 vector 整数的‘inputArr’传递。然后将‘inputArr’的值存储到‘arr’变量中,以满足对第 K 个值的操作。
同样在公共部分,我们初始化名为‘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; // represents as length position i.e, 0 int K = 0; k_reach A(arr); // here A is the object and arr is the parameter bool pass = A.is_Reach(start_element, K); if (pass) cout << "We can reach the value k from the given start index."; else cout << "We cannot reach the value k from the given start index."; return 0; }
输出
We can reach the value k from the given start index.
结论
我们探讨了当给定起始索引时到达具有 k 值的索引的可能性概念。我们看到了如何使用按位运算符同时给出两个条件,还看到了面向对象编程的概念如何对这个问题有用。例如,假设我们的 ID 用作 K 值,起始索引用作 ID 的序列号。