檢查從給定起始索引是否可以到達值為 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 變數提供的名稱
演算法
我們將使用名為‘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 的序列號。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP