C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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


この記事では、方程式x + y + z<=nの解の数を見つけるためのアプローチについて説明します。この問題では、4つの変数を持つ方程式があり、タスクは与えられた方程式の解を見つけることです。簡単な例を次に示します&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)のすべての値を簡単に調べることができます。

解決策を見つけるためのアプローチ

次に、ブルートフォースのアプローチを使用して、特定の問題の解決策を見つけます。

ブルートフォース

このプログラムでは、方程式z <=n --x --y(ここでzは分離されています)を満たすように、(x、y)、(y、z)、および(x、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)のすべての組み合わせを調べ、方程式が方程式を満たしているかどうか、および方程式を満たしているかどうかを確認します。を満たす場合は、答えをインクリメントします。

結論

この記事では、 O(X * Y)の方程式x+ y + z<=nを満たす解の数を見つける問題を解決します。 時間計算量。また、この問題のC ++プログラムと、この問題を解決するための完全なアプローチについても学びました。同じプログラムをC、Java、Python、その他の言語などの他の言語で作成できます。


  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. C++を使用してセットの反射関係の数を見つける

    この記事では、集合上の反射関係の数を見つけるためのアプローチについて説明します。この問題では、数nが与えられ、n個の自然数のセットで、反射関係の数を決定する必要があります。 反射関係 −集合Aの関係は、(a、a)が集合Aに属するすべてのaがRに属する場合、反射的と呼ばれます。たとえば、- Input : x = 1 Output : 1 Explanation : set = { 1 }, reflexive relations on A * A : { { 1 } } Input : x = 2 Output : 4 Explanation : set = { 1,2 }, reflex