ホームページ >バックエンド開発 >C++ >C++ プログラミングを使用して、方程式 x + y + z <= n の解の数を求めます。

C++ プログラミングを使用して、方程式 x + y + z <= n の解の数を求めます。

王林
王林転載
2023-08-25 11:41:241530ブラウズ

使用C++编程,找到方程x + y + z <= n的解的数量

この記事では、方程式 x y z

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)。

解決策

次に、総当たり法を使用して、指定された問題の解決策を見つけます。

ブルートフォースメソッド

このプログラムでは、方程式 z を満たすために、(x,y)、(y,z)、および (x,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)を計算し、式が条件を満たしているかどうかを確認し、満たしている場合は答えを追加します。

結論

この記事では、時間計算量 O(X*Y で、方程式 x y z。また、この問題を解決するための C プログラムと完全な解決策も学びました。同じプログラムを C、Java、Python などの他の言語で書くことができます。

以上がC++ プログラミングを使用して、方程式 x + y + z <= n の解の数を求めます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。