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

รหัส C++ เพื่อค้นหาหินสูงสุดที่เราสามารถเลือกได้จากสามกอง


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

  • นำหินหนึ่งก้อนจากกองแรกและสองก้อนจากกองที่สอง (เมื่อกองมีจำนวนหินที่จำเป็น)

  • นำหินหนึ่งก้อนจากกองที่สองและสองก้อนหินจากกองที่สาม (เมื่อกองหินมีจำนวนที่จำเป็น)

เราต้องนับหินให้ได้มากที่สุดกี่ก้อน?

ดังนั้นหากอินพุตเป็นเหมือน a =3; ข =4; c =5 จากนั้นผลลัพธ์จะเป็น 9 เพราะในการดำเนินการสองครั้ง เราสามารถนำหินสองก้อนจากกองที่สองและสี่ก้อนหินจากกองที่สาม รวมแล้วเรามี 6 หิน จากนั้นนำหนึ่งก้อนจากที่หนึ่งและสองจากที่สองเพื่อรับหินอีก 3 ก้อน

ขั้นตอน

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

return (minimum of b and floor of (c / 2) + minimum of a and (b - minimum of b and floor of (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