Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số nghiệm của phương trình x + y + z <=n bằng C ++

Trong bài viết này, chúng tôi sẽ giải thích các cách tiếp cận để tìm số nghiệm của phương trình x + y + z <=n. Trong bài toán này, chúng ta có một phương trình với bốn biến, và nhiệm vụ là tìm nghiệm của phương trình đã cho. Đây là một ví dụ đơn giản &miuns;

Input: X = 1, Y = 1, Z = 1, n = 1

Output: 4

Input: X = 1, Y = 2, Z = 3, n = 4

Output: 3

Trong bài toán này, chúng ta có thể đơn giản đi qua tất cả các giá trị của (x, y), (y, z), (x, z) bằng cách cô lập từng biến và kiểm tra xem nó có thỏa mãn phương trình hay không.

Phương pháp tiếp cận để tìm giải pháp

Bây giờ chúng ta sẽ sử dụng phương pháp Brute Force để tìm giải pháp cho vấn đề đã cho.

Lực lượng vũ phu

Trong chương trình này, chúng ta sẽ xem xét tất cả các giá trị có thể có của (x, y), (y, z) và (x, z) sao cho nó thỏa mãn phương trình z <=n - x - y (ở đây z là cô lập ) trong đó 0 <=z <=Z (và tương tự đối với các biến biệt lập khác).

Ví dụ


#include<bits/stdc++.h>
using namespace std;
int main(){
    int X = 1, Y = 2, Z = 3, n = 4; // limits of x, y, z and given n.
    int answer = 0; // counter variable.
    for(int i = 0; i <= X; i++){
        for(int j = 0; j <= Y; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= Z){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    for(int i = 0; i <= X; i++){
        for(int j = 0; j <= Z; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= Y){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    for(int i = 0; i <= Z; i++){
        for(int j = 0; j <= Y; j++){
            int temp = (n - i) - j; // temp = n - x - y.
            if(temp >= X){ // if n - x - y >= z so we increment the answer.
               answer++;
            }
        }
    }
    cout << answer << "\n";
}

Đầu ra

17

Giải thích về Chương trình trên

Trong chương trình này, chúng ta sẽ đi qua tất cả các kết hợp của (x, y), (y, z), (x, z) bằng cách sử dụng vòng lặp for lồng nhau và kiểm tra phương trình xem nó có thỏa mãn phương trình hay không và nếu nó sau đó thỏa mãn, chúng tôi tăng câu trả lời.

Kết luận

Trong bài viết này, chúng tôi giải một bài toán tìm Số nghiệm thỏa mãn phương trình x + y + z <=n trong O (X * Y) thời gian phức tạp. Chúng tôi cũng đã học chương trình C ++ cho vấn đề này và cách tiếp cận hoàn chỉnh mà chúng tôi đã giải quyết vấn đề này. Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, java, python và các ngôn ngữ khác.