在 C 程式中列印多次陣列範圍遞增操作後修改的陣列。


給定陣列 arr[m],其中包含 m 個整數和 n,這是將要新增到陣列中的值,並給出 r 個查詢以及開始和結束位置。對於每個查詢,我們必須在陣列中從開始到末尾限制處新增 n 的值。

示例

Input:
arr[] = {1, 2, 3, 4, 5}
query[] = { { 0, 3 }, { 1, 2 } }
n = 2
Output:
If we run above program then it will generate following output:
Query1: { 3, 4, 5, 6, 5 }
Query2: { 3, 6, 7, 6, 5 }

該程式可以透過以下簡單方法解決:

  • 我們將迭代所有查詢,從查詢中的開始點到儲存在查詢中的結束點遍歷陣列。
  • 新增 n 的值並列印陣列。

演算法

START
STEP 1 : DECLARE A STRUCT range for start AND end LIMITS
STEP 2 : IN FUNCTION add_tomatrix(int arr[], struct range r[], int n, int size, int m)
   int i, j, k;
   LOOP FOR i = 0 AND i < m AND i++
      LOOP FOR j = r[i].start AND j<= r[i].end AND j++
         arr[j] = arr[j] + n
      END FOR
      LOOP FOR k = 0 AND k < size AND k++
         PRINT arr[k]
      END FOR
   END FOR
STOP

示例

#include <stdio.h>
struct range{
   int start, end; //struct to give the range for the array elements
};
int add_tomatrix(int arr[], struct range r[], int n, int size, int m){
   int i, j, k;
   for ( i = 0; i < m; i++) //for all the elements in a struct we defined{
      for(j = r[i].start; j<= r[i].end; j++) //from where till where we want our results to be updated{
         arr[j] += n; //add the value of the particular range
      }
      printf("Query %d:", i+1);
      for ( k = 0; k < size; k++){
         printf(" %d",arr[k]); // print the whole array after every query
      }
      printf("
");    } } int main(int argc, char const *argv[]){    int arr[] ={3, 4, 8, 1, 10};    struct range r[] = {{0,2}, {1, 3}, {3, 4}};    int n = 2;    int size = sizeof(arr)/sizeof(arr[0]);    int m = sizeof(r)/sizeof(r[0]);    add_tomatrix(arr, r, n, size, m);    return 0; }

輸出

如果執行上述程式,它將生成以下輸出:

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

更新於:2019 年 8 月 22 日

108 次瀏覽量

開啟你的事業

完成課程獲得認證

開始
廣告