ในปัญหานี้ เราได้รับตัวเลข N หน้าที่ของเราคือสร้างโปรแกรมเพื่อค้นหาค่าสูงสุดโดยเลือกว่าจะหารหรือพิจารณาว่าเป็น itis ใน C++
คำอธิบายปัญหา
ในการหาค่าสูงสุด เราสามารถพิจารณาค่าสองค่าใดๆ ก็ได้ โดยหาค่าตามที่เป็นอยู่หรือหาค่าสูงสุดโดยการหารก็ได้ ค่าสามารถแยกออกมาเป็น F(N/2) + F(N/ 3) + F(N/4) +F(N/5) .
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล :N =8
ผลผลิต :9
คำอธิบาย
F(8) =F(8/2) + F(8/3) + F(8/4) + F(8/5) =F(4) + F(2) + F(2) + F( 1) =4 + 2 + 2 + 1 =9
แนวทางการแก้ปัญหา
แนวคิดนี้เป็นเพียงการเรียกใช้ฟังก์ชันเดียวกันหลายครั้งสำหรับค่าของการแบ่ง สำหรับสิ่งนี้ เราได้ใช้แนวคิดการเขียนโปรแกรมไดนามิกและสร้างอาร์เรย์เพื่อแก้ไขค่าของ F(i) จาก 0 ถึง N เพื่อนำกลับมาใช้ใหม่เพื่อค้นหาวิธีแก้ปัญหา
ตัวอย่าง
#include <iostream> using namespace std; int calcMaximumValue(int N) { int F[N + 1]; int divVal = 0; F[0] = 0; F[1] = 1; for (int i = 2; i <= N; i++) { divVal = ( F[i / 2] + F[i / 3] + F[i / 4] + F[i / 5] ); if(divVal > i) F[i] = divVal; else F[i] = i; } return F[N]; } int main() { int N = 8; cout<<"Maximum value with the choice of either dividing or considering as it is = "<<calcMaximumValue(N); return 0; }
ผลลัพธ์
Maximum value with the choice of either dividing or considering as it is = 9