สมมุติว่ามีอุโมงค์สูง 41 กว้างใหญ่มาก เรายังมีรายการกล่องที่มีความยาว ความกว้าง และความสูงอีกด้วย กล่องสามารถผ่านอุโมงค์ได้หากความสูงน้อยกว่าความสูงของอุโมงค์ เราจะต้องหาปริมาตรที่ไหลผ่านอุโมงค์ ปริมาณ ยาว * กว้าง * สูง. ดังนั้นเราจึงมีตัวเลข N ซึ่งเป็นอาร์เรย์ 2 มิติที่มี N แถวและสามคอลัมน์
ดังนั้น ถ้าอินพุตเป็น N =4 กล่อง =[[9,5,20],[3,7,15],[8,15,41],[6,3,42]] ผลลัพธ์ก็จะออกมา เป็น 900 และ 315 เราผ่านสองกล่องแรกได้ ปริมาตรคือ 9 * 5 * 20 =900 และ 3 * 7 * 15 =315 ไม่รองรับความสูงของกล่องอื่นๆ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดประเภทข้อมูลของ Box ด้วยความยาว ความกว้าง และความสูง
-
กำหนดปริมาณฟังก์ชัน () ซึ่งจะเป็นกล่อง
-
ส่งคืน box.length * box.width * box.height
-
กำหนดฟังก์ชันที่ต่ำกว่า () ซึ่งจะเป็นกล่อง
-
คืนค่า จริง หาก box.height <41 มิฉะนั้น เท็จ
-
จากวิธีหลัก ให้ทำดังนี้:,
-
สำหรับการเริ่มต้น i :=0 เมื่อ i
-
ถ้า lower(boxes[i]) เป็นจริง ดังนั้น:
-
แสดงระดับเสียง(กล่อง[i])
-
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <stdio.h> #define N 4 struct Box{ int length, width, height; }; int volume(struct Box box){ return box.length*box.width*box.height; } int lower(struct Box box){ return box.height < 41; } int solve(struct Box boxes[]){ for (int i = 0; i < N; i++) if (lower(boxes[i])) printf("%d\n", volume(boxes[i])); } int main(){ struct Box boxes[N] = {{9,5,20},{3,7,15},{8,15,41},{6,3,42}}; solve(boxes); }
อินพุต
4, {{9,5,20},{3,7,15},{8,15,41},{6,3,42}}
ผลลัพธ์
900 315