在进行 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

开启您的职业生涯

完成课程获得认证

开始学习
广告