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

In mảng sau nhiều lần tăng đoạn (range increment) trong C

Bài toán

Cho mảng arr[m], giá trị n, và r truy vấn (start, end). Mỗi truy vấn cộng n vào arr[start..end]. In mảng sau mỗi truy vấn.

Ví dụ

arr = {1,2,3,4,5}, n=2
Query1: [0,3] → {3,4,5,6,5}
Query2: [1,2] → {3,6,7,6,5}

Thuật toán đơn giản

For each query:
    For j = start to end: arr[j] += n
    Print arr

Mã nguồn C

#include <stdio.h>

struct range { int start, end; };

void add_tomatrix(int arr[], struct range r[], int n, int size, int m) {
    for(int i=0; i

Kết quả

Query 1: 5 6 10 1 10
Query 2: 5 8 12 3 10
Query 3: 5 8 12 5 12