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

Khôi phục mảng ẩn B từ mảng A cho trước bằng C++

Mô tả bài toán

Cho mảng A kích thước n. Mảng ẩn B cũng kích thước n. A[i] = B[i] - B[i+1] + B[i+2] - ... (dấu luân phiên). Cần tìm B.

Ví dụ

A = [6, -4, 8, -2, 3] → B = [2, 4, 6, 1, 3].

Thuật toán

Quan sát: A[i] + A[i+1] = B[i]. Vì A[i] = B[i] - B[i+1] + B[i+2] - ... và A[i+1] = B[i+1] - B[i+2] + ... → cộng hai vế: A[i]+A[i+1] = B[i]. Với i=n-1, A[n-1] = B[n-1] (vì không có A[n]).

Code C++

#include <bits/stdc++.h>
using namespace std;

void solve(vector<int> A) {
    int n = A.size();
    for (int i = 0; i < n; i++) {
        int val = (i+1 < n) ? A[i] + A[i+1] : A[i];
        cout << val << (i+1

Đầu vào / Đầu ra

Input: {6, -4, 8, -2, 3}

Output: 2, 4, 6, 1, 3,