使用C++查詢方程x + y + z <= n的解的個數


在這篇文章中,我們將解釋查詢方程x+y+z<=n解的個數的方法。在這個問題中,我們有一個包含四個變數的方程,任務是找到給定方程的解。這是一個簡單的例子 &miuns;

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

Output: 4

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

Output: 3

在這個問題中,我們可以簡單地遍歷(x, y),(y,z),(x,z)的所有值,透過隔離每個變數並檢查它是否滿足方程。

查詢解的方法

現在我們將使用暴力法來找到給定問題的解。

暴力法

在這個程式中,我們將遍歷(x,y),(y,z)和(x,z)的所有可能值,使其滿足方程z <= n - x - y(這裡z被隔離),其中0 <= z <= Z(其他被隔離的變數也一樣)。

示例

#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";
}

輸出

17

上述程式的解釋

在這個程式中,我們將使用巢狀for迴圈遍歷(x,y),(y, z),(x,z)的所有組合,並檢查方程是否滿足,如果滿足,則遞增答案。

結論

在這篇文章中,我們解決了一個問題,即查詢滿足方程x + y + z<= n的解的個數,時間複雜度為O(X*Y)。我們還學習了這個問題的C++程式以及我們解決這個問題的完整方法。我們可以用C、Java、Python和其他語言編寫相同的程式。

更新於:2021年11月24日

238 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告