สมมติว่าเรามี n คู่ของกล่องที่ต้องส่งในภาชนะรูปสี่เหลี่ยมจัตุรัส ความกว้างของคู่กล่องกำหนดเป็นคู่ (a, b) และให้ในอาร์เรย์ 'dimensions' หากเราวางความกว้างของกล่องขนานกัน เราต้องหาว่ากล่องจะใช้พื้นที่เท่าไหร่ในภาชนะ เราไม่สามารถซ้อนกล่องทับกันได้ เราต้องหาพื้นที่ขั้นต่ำที่จำเป็นสำหรับคู่กล่องทั้ง n คู่
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 4, dimensions = {{2, 4}, {3, 6}, {2, 5}, {4, 6}} ผลลัพธ์จะได้:
64 25 36 16
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
res := 0 ในขณะที่ n ไม่เป็นศูนย์ ทำ: a := ค่าแรกของ dimensions[n] b := ค่าที่สองของ dimensions[n] res := max(2 * min(a, b), max(a, b)) พิมพ์(res * res) n := n - 1
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; #define N 100 void solve(int n, vector<pair<int, int>> dimensions) { int res = 0; while(n--){ int a = dimensions[n].first; int b = dimensions[n].second; int res = max(2 * min(a, b), max(a, b)); cout<< res * res << endl; } } int main() { int n = 4; vector<pair<int, int>> dimensions = {{2, 4}, {3, 6}, {2, 5}, {4, 6}}; solve(n, dimensions); return 0; }
ข้อมูลนำเข้า
4, {{2, 4}, {3, 6}, {2, 5}, {4, 6}}
ข้อมูลส่งออก
64 25 36 16