คำชี้แจงปัญหา
กำหนดจำนวนเต็มที่ไม่เป็นศูนย์สามจำนวน a, b และ c ภารกิจคือการหาค่าสูงสุดที่เป็นไปได้โดยใส่เครื่องหมายการบวกและการคูณระหว่างกันในลำดับใดก็ได้
โปรดทราบว่าอนุญาตให้จัดเรียงจำนวนเต็มได้ แต่ต้องใช้การบวกและการคูณเพียงครั้งเดียว
หาก a =1, b =3 และ c =5 ค่าสูงสุดจะเป็น 20 ดังนี้−
(1 + 3) * 5 =20
อัลกอริทึม
<ก่อน>1. หากจำนวนทั้งหมดเป็นบวก ให้บวกจำนวนน้อยสองตัวและคูณผลลัพธ์ด้วยจำนวนที่มากกว่า2 หากมีเพียงสองจำนวนที่เป็นบวก ให้คูณจำนวนบวก 2 จำนวนแล้วบวกจำนวนที่เหลือ 3 หากมีเพียงตัวเลขเดียวที่เป็นบวก ให้คูณจำนวนลบ 2 จำนวนแล้วบวกจำนวนที่เหลือ 4 หากตัวเลขทั้งหมดเป็นค่าลบ ให้บวกจำนวนเต็มที่มากที่สุดสองตัวแล้วคูณด้วยจำนวนที่เหลือตัวอย่าง
#includeใช้เนมสเปซ std;int getMaximumResult(int a, int b, int c){ int negativeCnt =0; int sum =a + b + c; int mul =a * b * c; int ที่ใหญ่ที่สุด =สูงสุด (a, สูงสุด (b, c)); int น้อยที่สุด =min(a, min(b, c)); ถ้า (a <0) { ++negativeCnt; } ถ้า (b <0) { ++negativeCnt; } ถ้า (c <0) { ++negativeCnt; } if (negativeCnt ==0) { return (ผลรวม - ใหญ่ที่สุด) * ใหญ่ที่สุด; } else if (negativeCnt ==1) { return (mul / เล็กที่สุด) + เล็กที่สุด; } อื่น ๆ ถ้า (negativeCnt ==2) { ผลตอบแทน (mul / ใหญ่ที่สุด) + ใหญ่ที่สุด; } else if (negativeCnt ==3) { return (ผลรวม - น้อยที่สุด) * น้อยที่สุด; }}int main(){ int a =1, b =3, c =5; cout <<"ค่าสูงสุด =" < ผลลัพธ์
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้−
ค่าสูงสุด =20