以C ++构造给定数组的后缀递增/递减运算的计数

我们给了一个包含正整数的目标数组arr []。目标是使用全为0的初始数组构造目标数组arr []。可以应用于全为0的给定空数组的操作将在后缀增加/减少操作。

如果我们选择索引i,则在后缀递增操作的情况下,我们将从索引i到最后一个索引的所有元素加1。

对于后缀递减运算,我们将从索引i到最后一个索引的所有元素中减去1。

让我们用例子来理解

输入− arr [] = {1,2,3}

输出-构造给定数组的后缀递增/递减操作的计数为-3

说明 

Starting from { 0, 0, 0 }

Choose index 0, applying suffix increment { 1, 1, 1 }

Choose index 1, applying suffix increment { 1, 2, 2 }

Choose index 2, applying suffix increment { 1, 2, 3 }

Total operations =3

输入− arr [] = {1,4,5,3}

输出-构造给定数组的后缀递增/递减操作的计数为-7

说明 

Starting from { 0, 0, 0, 0 }

Choose index 0, applying suffix increment { 1, 1, 1, 1 }

Choose index 1, applying suffix increment { 1, 2, 2, 2 }

Choose index 1, applying suffix increment { 1, 3, 3, 3 }

Choose index 1, applying suffix increment { 1, 4, 4, 4 }

Choose index 2, applying suffix increment { 1, 4, 5, 5 }

Choose index 3, applying suffix decrement { 1, 4, 5, 4 }

Choose index 3, applying suffix decrement { 1, 4, 5, 3 }

Total operations = 7

以下程序中使用的方法如下

如果我们将初始数组作为B []。使第一个元素B [0]等于arr [0]。我们将需要arr [0]个后缀增量操作。此后,所有B [0] = B [1] .... = B [n-1] = arr [0]将相等。

为了使第二个元素B [1]等于arr [1],我们需要| arr [1] -arr [0] | 操作次数。(递增或递减)。

因此,要使B [i]等于arr [i],我们需要| arr [i]-arr [i-1] | 操作次数。

总操作数为| arr [0] | + | arr [1] -arr [0] | +…。+ | arr [n-1] -arr [n-2] |。

  • 将目标数组作为arr []。

  • 函数incr_decr_op(int arr [],int size)获取数组及其长度,并返回后缀递增/递减操作的计数以构造给定的数组

  • 将初始计数设为0。

  • 使用for循环遍历数组arr []

  • 对于索引0,添加arr [i]进行计数。

  • 对于其他索引,添加abs(arr [i] -arr [i-1])进行计数。

  • 在for循环的末尾,返回结果作为计数。

示例

#include <bits/stdc++.h>

using namespace std;

int incr_decr_op(int arr[], int size){

   int count = 0;

   for (int i = 0; i < size; i++){

      if (i > 0){

         count += abs(arr[i] - arr[i - 1]);

      }

      else{

         count = count + abs(arr[i]);

      }

   }

   return count;

}

int main(){

   int arr[] = { 3, 3, 1, 2, 2 };

   int size = sizeof(arr) / sizeof(arr[0]);

   cout<<"Count of suffix increment/decrement operations to construct a given array are: "<<incr_decr_op(arr, size) << endl;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of suffix increment/decrement operations to construct a given array are: 6

以上是 以C ++构造给定数组的后缀递增/递减运算的计数 的全部内容, 来源链接: utcz.com/z/321547.html

回到顶部