首頁 > 後端開發 > C++ > 在 C++ 中的範圍求和查詢後從給定數組中尋找初始數組

在 C++ 中的範圍求和查詢後從給定數組中尋找初始數組

PHPz
發布: 2023-09-17 17:09:02
轉載
2735 人瀏覽過

在 C++ 中的范围求和查询后从给定数组中查找初始数组

在這個問題中,我們得到一個大小為 N 的陣列 res[]。我們的任務是在範圍求和查詢後從給定數組中找到初始數組。

我們需要找到起始數組,在對其執行 [s, e, val] 查詢時將返回數組 rel[]。

每個[s, e, val] 查詢的解決方式為

s -> 起始索引

e -> 結束索引

val -> 更新要加入數組中從s 到e 的每個元素的值。

讓我們舉個例子來理解這個問題,
Input : rel[] = {7, 4, 8}
Query[][] = {{1, 2, 1},
{0, 1, 3}}
Output : {4, 0, 7}
登入後複製

#Explanation

的翻譯為:

Explanation

initialArray = {4, 0, 7}; query = {1, 2, 1}; finalArray = {4, 1, 8}
initialArray = {4, 1, 8}; query = {0, 1, 3}; finalArray = {7, 4, 8}
登入後複製

解決方案

解決問題的簡單方法是遍歷所有查詢,對於所有查詢使用我們解決問題的方式進行解決,然後在最後返回找到的陣列。在這裡,為了找到初始數組,我們需要以相反的方式對其進行操作,即從給定數組中減去它。

範例

程式範例以說明我們解決方案的工作原理

#include <iostream>
using namespace std;
void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) {
   for (int i = 0; i < q; i++) {
      for (int j = query[i][0];j <= query[i][1]; j++) {
         arr[j] = arr[j] - query[i][2];
      }
   }
   for (int i = 0; i < n; i++)
      cout<<arr[i]<<" ";
}
int main() {
   int arr[] = { 5, 1, 8, 2, 9};
   int n = sizeof(arr) / sizeof(arr[0]);
   int query[][3] = { {0, 2, -2}, {1, 4, 3}};
   int q = sizeof(query) / sizeof(query[0]);
   cout<<"Initial array : "; calcInitialArrayQueries(arr, n, query, q);
   return 0;
}
登入後複製

輸出

Initial array : 7 0 7 -1 6
登入後複製

以上是在 C++ 中的範圍求和查詢後從給定數組中尋找初始數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板