首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言實作:計算陣列前綴和與後綴和相等的組合數

     編輯:關於C

在程式設計練習中,陣列操作是基礎且重要的主題。本文介紹一個經典問題:給定一個整數陣列,計算有多少組「前綴和」(從陣列開頭累加到某位置)等於「後綴和」(從陣列結尾反向累加到某位置)。

問題描述

輸入一個固定大小的整數陣列 num[] = {3, 6, 2, 1, 4, 5, 2}。我們需要分別計算從左至右的累加和(前綴和)以及從右至左的累加和(後綴和),然後統計有多少對 (i, j) 使得 prefix[i] == suffix[j]。

演算法邏輯

  1. 建立兩個陣列 sum[] 和 total[] 分別儲存前綴和與後綴和。
  2. 遍歷原始陣列,計算並儲存各位置的累加值。
  3. 雙重迴圈比較兩個和陣列的所有元素,相等時計數器加一。
  4. 輸出符合條件的組合總數。

完整程式碼

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i, j, n;
    int count = 0;
    int sum[7] = {0};
    int total[7] = {0};
    int num[] = {3, 6, 2, 1, 4, 5, 2};

    // 計算前綴和
    n = 0;
    for (i = 0; i < 7; i++) {
        n += num[i];
        sum[i] = n;
    }

    // 計算後綴和
    n = 0;
    for (i = 6; i >= 0; i--) {
        n += num[i];
        total[i] = n;
    }

    // 比較兩者
    for (i = 0; i < 7; i++) {
        for (j = 0; j < 7; j++) {
            if (sum[i] == total[j]) {
                count++;
            }
        }
    }

    printf("陣列 num[] 中有 %d 組前綴和等於後綴和\n", count);
    return 0;
}

程式執行結果圖示

執行結果說明

程式會輸出符合條件的組合數量。此範例展示了陣列遍歷、累加運算與巢狀迴圈比較的基本技巧,適合初學者練習邏輯思維與 C 語言語法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved