เราได้รับ N รูปี เป้าหมายคือซื้อน้ำให้ได้มากที่สุดด้วยเงิน โดยมีอัตราของขวดน้ำดังนี้ −
- ขวดพลาสติก:รูปีต่อ 1 ลิตร
- ขวดแก้ว:รูปี B สำหรับ 1 ลิตร
- ขวดแก้ว:รูปี B สำหรับ 1 ลิตร
ตอนนี้ต้นทุนดั้งเดิมของขวดแก้วกลายเป็นรูปี พ.ศ. หลังจากกลับมา
หากราคาขวดพลาสติกยังน้อยกว่า พ.ศ. ให้ซื้อเฉพาะขวดพลาสติก หรือซื้อขวด N-E/B-Eglass และพักผ่อนในขวดพลาสติก
อินพุต
N = 6, A = 5, B = 4, E = 3;
ผลลัพธ์
Maximum litres of water: 3
อินพุต
N = 10, A = 5, B = 10, E = 3;
ผลลัพธ์
Maximum litres of water: 2
คำอธิบาย − B-E=7, 7>A n/a=10/5 =สามารถซื้อขวดพลาสติกได้ 2 ขวด
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เงินจำนวนเต็ม ขวด gbottle และ gempty ใช้สำหรับอัตราและจำนวนเงินที่เรามี
-
ฟังก์ชัน maxWater(int mny,int pb,int gb,int ge) รับค่าทั้งหมดเป็นพารามิเตอร์และพิมพ์ปริมาณน้ำที่สามารถซื้อได้
-
ลิตรที่ปรับเปลี่ยนได้ใช้สำหรับเก็บปริมาณน้ำที่คำนวณได้เป็นลิตร
-
เราส่งต่อ pb เป็นค่าใหม่ของขวดแก้ว(ค่าเดิม-ค่าคืน)
-
หากค่า gb ที่ส่งผ่านน้อยกว่าค่า pb ให้ซื้อขวดแก้ว (mny-ge)/gb
-
ลบจำนวนนี้เพื่อคำนวณเงินที่เหลือ mny-=ltrs*gb
-
ตอนนี้ขวดพลาสติกที่ซื้อได้คือ mny/pb
-
หากค่า pb ที่ส่งผ่านมากกว่าค่า pb ให้ซื้อขวดพลาสติก mny/pb เท่านั้น
-
พิมพ์ผลทั้งสองกรณีเป็นหมายเลข ของขวดคือไม่มี ลิตรน้ำ แต่ละขวดมีความจุ 1 ลิตร
ตัวอย่าง
// CPP implementation of the above approach #include<bits/stdc++.h> using namespace std; void maxWater(int mny,int pb,int gb,int ge){ int litrs; // if buying glass bottles is profitable if (gb < pb){ // no. of glass bottles int tmp=mny-ge/gb; litrs=tmp>0?tmp:0; mny-=litrs*gb; // no. of plastic bottles litrs+=mny/pb; cout<<"Maximum Liters of water : "<<litrs<<endl; } // only plastic bottles else cout<<"Maximum Liters of water only Plastic bottles: "<<(mny /pb)<<endl; } int main(){ int money = 20, pbottle=5, gbottle=10, gempty = 8; gbottle=gbottle-gempty; //new cost of glass botlles maxWater( money,pbottle,gbottle,gempty ); }
ผลลัพธ์
Maximum Liters of water: 14