首頁  >  文章  >  後端開發  >  C++程式:在刪除最大值後找到數組 C++程式用於在刪除最大值後找到數組

C++程式:在刪除最大值後找到數組 C++程式用於在刪除最大值後找到數組

WBOY
WBOY轉載
2023-09-04 20:01:02538瀏覽

C++程序:在删除最大值后找到数组

C++程序用于在删除最大值后找到数组

假設我們有一個包含n個元素的陣列A和另一個值k。我們想要執行k個操作。一個運算的形式如下:

  • 假設d是陣列的最大值

  • 對於從1到n的每個索引i,將A [i]替換為d - A[i]

我們需要找到最終的序列。

問題類別

資料結構中的陣列是一組特定類型的有限元素集合。數組被用作 在連續的記憶體位置中儲存相同類型的元素。一個數組被分配了 特定名稱,並且在各種程式語言中透過該名稱進行引用 存取數組的元素,需要索引。我們使用術語“name[i]”來 存取數組'name'中位於位置'i'的特定元素。各種資料結構 如棧、佇列、堆、優先權佇列都可以使用陣列來實作。操作於 陣列包括插入、刪除、更新、遍歷、搜尋和排序操作。訪問 下面的連結用於進一步閱讀。

https://www.tutorialspoint.com/data_structures_algorithms/array_data_structure.htm

因此,如果我們問題的輸入是A = [5, -1, 4, 2, 0]; k = 19.,那麼輸出將為[0, 6, 1, 3, 5],因為d 是5。

步驟

為了解決這個問題,我們將按照以下步驟進行:

n := size of A
m := -inf
t := -inf
for initialize i := 0, when i < n, update (increase i by 1), do:
   m := maximum of m and A[i]
for initialize i := 0, when i < n, update (increase i by 1), do:
   A[i] := m - A[i]
   t := maximum of t and A[i]
if k mod 2 is same as 1, then:
   for initialize i := 0, when i < n, update (increase i by 1), do:
      print A[i]
   Otherwise
      for initialize i := 0, when i < n, update (increase i by 1), do:
         A[i] := t - A[i]
         print A[i]

範例

讓我們看一下以下的實作以便更好地理解−

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A, int k){
   int n = A.size();
   int m = -999;
   int t = -999;
   for (int i = 0; i < n; i++)
      m = max(m, A[i]);
   for (int i = 0; i < n; i++)
      A[i] = m - A[i], t = max(t, A[i]);
   if (k % 2 == 1)
      for (int i = 0; i < n; i++)
         cout << A[i] << ", ";
   else
      for (int i = 0; i < n; i++)
         A[i] = t - A[i], cout << A[i] << ", ";
}
int main(){
   vector<int> A = { 5, -1, 4, 2, 0 };
   int k = 19;
   solve(A, k);
}

輸入

{ 5, -1, 4, 2, 0 }, 19

輸出

0, 6, 1, 3, 5,

以上是C++程式:在刪除最大值後找到數組 C++程式用於在刪除最大值後找到數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除