在C++中構造一個包含給定範圍內元素總和的陣列
給定一個僅包含整數的陣列 arr[] 和一個奇數和 sum。目標是建立一個和陣列 arr_2[],使得每個 arr_2[i] 等於 arr[] 中前面 sum/2 個元素的和 + arr[i] + arr[] 中後面 sum/2 個元素的和。如果 sum 為 1,則 arr_2[i] = arr[i]
例如
輸入
arr[] = { 4, 1, 7, 5, 2, 9} sum=3輸出
Construction of sum-array with sum of elements in given range are: 5 12 13 14 16 17 17 9 3
解釋
The sum array is constructed as: arr_2[0]=arr[0]+arr[1] = 4+1 = 5 arr_2[1]=arr[0]+arr[1]+arr[2] = 4+1+7 = 12 arr_2[2]=arr[1]+arr[2]+arr[3] = 1+7+5 = 13 arr_2[3]=arr[2]+arr[3]+arr[4] = 7+5+2 = 14 arr_2[4]=arr[3]+arr[4]+arr[5] = 5+2+9 = 16 arr_2[5]=arr[4]+arr[5] = 2+9 = 11s
輸入
arr[] = { 1,2,3,4,5 } sum=5輸出
Construction of sum-array with sum of elements in given range are − 6 10 15 14 12
解釋
The sum array is constructed as: arr_2[0]=arr[0]+arr[1]+arr[2] = 1+2+3 = 6 arr_2[1]=arr[0]+arr[1]+arr[2]+arr[3] = 1+2+3+4= 10 arr_2[2]=arr[0]+arr[1]+arr[2]+arr[3]+arr[4] = 1+2+3+4+5 = 15 arr_2[3]=arr[1]+arr[2]+arr[3]+arr[4] = 2+3+4+5= 14 arr_2[4]=arr[2]+arr[3]+arr[4]= 3+4+5 = 12
以下程式中使用的方案如下 −
在這個方案中,我們將使用滑動視窗的概念。將下一個最右邊的元素新增到之前的視窗和中,並從該視窗中刪除最左邊的元素。
將一個整數陣列 arr[] 和一個值 sum 作為輸入。
函式 sum_array(int arr[], int size, int sum) 返回一個包含給定範圍內元素總和的和陣列。
將初始計數設為 0。
將和陣列設為 arr_2[size]。
設 temp = sum / 2 + 1。
將從 0 到 temp 的 temp 個元素新增到計數中。並將 arr_2[0] 設為計數。
對於和陣列的下一個元素,使用 for 迴圈從 i=1 到 i<size 進行遍歷。
設 temp_1 = i − (sum / 2) − 1。如果它 >= 0,則從計數中減去 arr[temp_1]。
設 temp_2 = i + (sum / 2)。如果它 < size,則將 arr[temp_2] 新增到計數中。
設定 arr_2[i] = count。
在 for 迴圈結束時,我們將得到 arr_2[] 作為和陣列。
使用 for 迴圈列印和陣列 arr_2[]。
示例
#include <bits/stdc++.h>
using namespace std;
void sum_array(int arr[], int size, int sum){
int count = 0;
int arr_2[size];
int temp = sum / 2 + 1;
for (int i = 0; i < temp; i++){
count = count + arr[i];
}
arr_2[0] = count;
for (int i = 1; i < size; i++){
int temp_1 = i − (sum / 2) − 1;
if (temp_1 >= 0){
count = count − arr[temp_1];
}
int temp_2 = i + (sum / 2);
if (temp_2 < size){
count = count + arr[temp_2];
}
arr_2[i] = count;
}
cout<<"Construction of sum−array with sum of elements in given range are: ";
for (int i = 0; i < size; i++){
cout<< arr_2[i] << " ";
}
}
int main(){
int arr[] = { 4, 1, 7, 5, 2, 9, 6, 2, 1 };
int sum = 3;
int size = sizeof(arr) / sizeof(int);
sum_array(arr, size, sum);
return 0;
}輸出
如果我們執行上述程式碼,它將生成以下輸出:
Construction of sum-array with sum of elements in given range are − 5 12 13 14 16 17 17 9 3
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP