检查从给定起始索引是否可以到达值为 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 值的索引的可能性。

Open Compiler
#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 的序列号。

更新于:2023年5月10日

98 次浏览

开启你的职业生涯

完成课程获得认证

开始
广告