以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
猜你喜欢