Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาค่าตัวแปร N ตัวจากสมการผลรวม N สมการด้วย C++


ภาพรวมปัญหา

ได้รับอาร์เรย์ sum[] โดยที่ sum[i] = ผลรวมของตัวแปรทั้งหมด ยกเว้น xᵢ

sum[1] = x₂ + x₃ + ... + xₙ
sum[2] = x₁ + x₃ + ... + xₙ
...
sum[n] = x₁ + x₂ + ... + xₙ₋₁

หาค่า x₁, x₂, ..., xₙ

ตัวอย่าง

อินพุต

sum[] = {6, 6, 6, 6, 6, 6, 6}

เอาต์พุต

x1 = 1, x2 = 1, x3 = 1, x4 = 1, x5 = 1, x6 = 1, x7 = 1

วิธีแก้ปัญหา

ให้ SUMX = x₁ + x₂ + ... + xₙ

sum[i] = SUMX - xᵢ → xᵢ = SUMX - sum[i]

รวมทุกสมการ: Σsum[i] = n·SUMX - SUMX = (n-1)·SUMX

→ SUMX = Σsum[i] / (n-1)

→ xᵢ = SUMX - sum[i]

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

void calcSumVariables(int sum[], int n) {
    float SUMX = 0;
    for (int i = 0; i < n; i++)
        SUMX += sum[i];
    SUMX /= (n - 1);
    
    for (int i = 0; i < n; i++)
        cout << "\nx" << (i + 1) << " = " << (SUMX - sum[i]);
}

int main() {
    int sum[] = {3, 8, 6, 7, 4, 5, 9};
    int N = sizeof(sum) / sizeof(sum[0]);
    cout << "The value of variables that form the sum are ";
    calcSumVariables(sum, N);
    return 0;
}

เอาต์พุต

The value of variables that form the sum are
x1 = 4 x2 = -1 x3 = 1 x4 = 0 x5 = 3 x6 = 2 x7 = -2

สรุป

แก้ระบบสมการเชิงเส้นแบบพิเศษได้ใน O(N) โดยใช้ผลรวมทั้งหมด