ในบทความนี้ เราจะอธิบายวิธีการหาจำนวนคำตอบของสมการ 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) ได้โดยการแยกตัวแปรแต่ละตัวและตรวจสอบว่าตรงกับสมการหรือไม่
แนวทางในการหาแนวทางแก้ไข
ตอนนี้เราจะใช้แนวทาง 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
คำอธิบายของโปรแกรมข้างต้น
ในโปรแกรมนี้ เราจะพูดถึงการรวมกันทั้งหมดของ (x,y), (y, z), (x,z) โดยใช้การ nested for loop และตรวจสอบสมการว่าตรงตามสมการหรือไม่ และถ้า พอใจแล้ว เราก็เพิ่มคำตอบ
บทสรุป
ในบทความนี้ เราจะแก้ปัญหาในการค้นหาจำนวนคำตอบที่ตรงกับสมการ x + y + z<=n ใน O(X*Y) ความซับซ้อนของเวลา นอกจากนี้เรายังได้เรียนรู้โปรแกรม C ++ สำหรับปัญหานี้และแนวทางที่สมบูรณ์ซึ่งเราแก้ไขปัญหานี้ เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ