이 글에서는 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)의 모든 값을 간단히 살펴보고 각 변수를 분리하여 방정식을 만족하는지 여부를 확인할 수 있습니다.
해결책을 찾기 위한 접근 방식
이제 우리는 주어진 문제에 대한 해결책을 찾기 위해 Brute Force 방식을 사용할 것입니다.
브루트 포스
이 프로그램에서 (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)의 모든 조합을 살펴보고 방정식을 만족하는지 여부와 방정식을 만족하는지 확인합니다. 만족하면 답을 증가시킵니다.
결론
이 기사에서는 O(X*Y)에서 x + y + z<=n 방정식을 만족하는 해의 수를 찾는 문제를 풉니다. 시간 복잡도. 우리는 또한 이 문제에 대한 C++ 프로그램과 이 문제를 해결하기 위한 완전한 접근 방식을 배웠습니다. C, Java, python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다.