Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xây dựng mảng tổng trong khoảng cho trước C++


Cho mảng arr[] và số lẻ sum. Tạo mảng arr_2[] mà arr_2[i] = tổng sum/2 phần tử trước + arr[i] + sum/2 phần tử sau. Dùng kỹ thuật cửa sổ trượt.

Ví dụ

arr = {4, 1, 7, 5, 2, 9}, sum = 3

arr_2[0] = 4+1=5, arr_2[1]=4+1+7=12, arr_2[2]=1+7+5=13...

Ví dụ hoàn chỉnh

#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 += 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 -= arr[temp_1];
        int temp_2 = i + (sum / 2);
        if (temp_2 < size)
            count += arr[temp_2];
        arr_2[i] = count;
    }
    cout << "Mảng tổng: ";
    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;
}

Kết quả

Mảng tổng: 5 12 13 14 16 17 17 9 3