在進行 K 次迴圈移位後將給定陣列分成兩半,使用按位或運算子求陣列和


在 C++ 中,分割陣列意味著將陣列分成多個子陣列。按位或運算用於處理 C++ 中兩個位或索引之間的比較和計算。在本文中,我們使用 k 次迴圈移位,這意味著最後一個索引位置將移到零索引位置,即根據 k 次迴圈移位的第一個陣列元素。

讓我們舉個例子來理解陣列中的迴圈移位。

給定的陣列是 1, 2, 3, 4, 5, 6, 7,長度為 6。

現在我們將值 3 賦值給 k,這意味著 k 次旋轉迴圈移位。

迴圈移位的操作步驟如下:

步驟 1 - 我們將 index[6] 移到 index[1],然後 index[5] 保持 index[6] 的位置。第一次迴圈移位變為 7,1,2,3,4,5,6,迴圈移位將以此方式旋轉。

步驟 2 - 第二次迴圈移位 - 6,7,1,2,3,4,5

步驟 3 - 第三次迴圈移位 - 5,6,7,1,2,3,4(最終結果)

語法

vector <data_type>l; vector_name(parameter 1, parameter 2)
  • Vector 用作關鍵字,資料型別是由使用者指定的資料型別。最後,vector_name 表示使用者分配的向量名稱。

  • 第一個引數指定向量的長度。第二個引數是用於初始化向量每個元素的值。

splitArray[i%2] = splitArray[i%2] | arr[(i+k)%arr.size()]
  • 取模運算子 (%) 將陣列分成兩半,並使用按位或運算子 ‘|’ 獲取兩半中每個元素的值。

  • ‘arr[(i+k)%arr.size()]’ 表示在執行按位或運算時的移位索引,它將給出分割陣列中兩個元素中的一個,這基於 ‘splitArray[i%2]’ 的對應關係。

演算法

  • 我們將從標頭檔案 ‘iostream’‘vector’ 開始程式。

  • 我們將定義一個名為 ‘Split_arr_sum_bitwise’ 的函式,該函式將 ‘arr’‘k’ 作為引數。此函式接收陣列值和迴圈移位後的更新陣列值。

  • 我們將在 ‘Split_arr_sum_bitwise’ 函式內初始化名為 ‘splitArray’ 的向量變數。此函式將儲存陣列的兩半。

  • 接下來,將值 0 儲存在變數 sum 中,該變數稍後將用於使用按位或運算子 ‘|’ 與名為 ‘splitArray’ 的函式陣列進行加法。

  • 然後我們建立第一個 for 迴圈,在這裡我們將迭代原始陣列。

  • 然後我們將建立一個第二個 for 迴圈,該迴圈將使用按位或運算子 ‘|’ 計算兩半的和。此運算子將在 K 次迴圈移位後找到分割陣列的兩半的和。

  • 現在開始主函式,我們在這裡將陣列值初始化為 ‘array’ 變數,並將值 ‘3’ 儲存在變數 ‘k’ 中,該變數將定義給定陣列的迴圈移位次數。

  • 最後,在列印語句中,我們呼叫名為 ‘Split_arr_sum_bitwise’ 的函式,並將引數 ‘K’‘array’ 傳遞給它以獲得最終輸出。

示例

在這個程式中,我們將實現使用按位或運算子求陣列和,然後在 K 次迴圈移位後將陣列分成兩半。

#include <iostream>
#include <vector>
using namespace std;
int Split_arr_sum_bitwise(vector<int>& arr, int k) {
   vector<int> splitArray(2,0);
   int sum = 0;
   // Splitting the array into two halves after K-Circular Shift.
   for (int i = 0; i < arr.size(); i++) {
      splitArray[i % 2] = splitArray[i % 2] | arr[(i + k) % arr.size()];
   }
   // Sum of two halves using bitwise OR
   for (int i = 0; i < splitArray.size(); i++) {
      sum = sum | splitArray[i];
   }
   return sum;
}
int main() {
   vector<int> array = {1, 2, 3, 4, 5, 6, 7};
   int k = 3;
   cout <<"The split sum of array halves using bitwise OR is "<<Split_arr_sum_bitwise(array, k) << endl;
   return 0;
}

輸出

The split sum of array halves using bitwise OR is 7

結論

我們探討了 K 次迴圈移位的概念,其中陣列被分成兩半,並且還了解了按位或運算子如何執行求和以儲存分割陣列的值。% 取模運算子將陣列分成兩半,這顯示了對陣列索引位置的奇數和偶數的計算。

更新於:2023年5月10日

瀏覽量:131

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告