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

โค้ด C++ หาหินสูงสุดที่เก็บได้จากสามกอง

สมมติว่าเรามีตัวเลขสามจำนวน a, b และ c มีกองหินสามกอง a, b, c ลูกตามลำดับ ทุกครั้งสามารถทำได้:

  • เอา 1 ลูกจากกองแรก และ 2 ลูกจากกองที่สอง (ถ้ามีพอ)
  • เอา 1 ลูกจากกองที่สอง และ 2 ลูกจากกองที่สาม (ถ้ามีพอ)

ต้องนับว่าสูงสุดเก็บหินได้กี่ลูก

เช่น ถ้าอินพุตคือ a = 3; b = 4; c = 5 เอาต์พุตจะเป็น 9 เพราะ 2 รอบเอา 2 จากกองสอง 4 จากกองสาม รวม 6 แล้วเอา 1 จากกองหนึ่ง 2 จากกองสอง ได้อีก 3

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

return (min(b, floor(c/2)) + min(a, (b - min(b, floor(c/2))) / 2)) * 3

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

#include <bits/stdc++.h>
using namespace std;

int solve(int a, int b, int c) {
    return (min(b, c / 2) + min(a, (b - min(b, c / 2)) / 2)) * 3;
}

int main() {
    int a = 3;
    int b = 4;
    int c = 5;
    cout << solve(a, b, c) << endl;
}

อินพุต

3, 4, 5

เอาต์พุต

9