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

โปรแกรม C++ หาค่ามัธยฐานสูงสุดขององค์ประกอบที่ผลรวมเท่ากับ s

สมมติว่าเรามีตัวเลขสองตัว n และ s เราต้องหาค่ามัธยฐาน (median) สูงสุดที่เป็นไปได้ของอาร์เรย์ที่มี n องค์ประกอบไม่ติดลบ โดยที่ผลรวมขององค์ประกอบเท่ากับ s

เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 3; s = 5 ผลลัพธ์จะได้ 2 เพราะสำหรับอาร์เรย์ [1, 2, 2] ผลรวมคือ 5 และมัธยฐานคือ 2

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

m := floor(n / 2) + 1 คืนค่า floor(s / m)

ตัวอย่างโค้ด

ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:

#include <bits/stdc++.h> using namespace std; int solve(int n, int s) {    int m = n / 2 + 1;    return s / m; } int main() {    int n = 3;    int s = 5;    cout << solve(n, s) << endl; }

ข้อมูลนำเข้า

3, 5

ข้อมูลส่งออก

2