Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าสูงสุดด้วยการเลือกแบ่งหรือพิจารณาตามที่อยู่ในโปรแกรม C++


ในปัญหานี้ เราได้รับตัวเลข 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