สมมติว่ามีพื้นที่แบ่งเป็นกริดขนาด n แถว และ m คอลัมน์ ต้องใช้โคมไฟส่องสว่าง โคมไฟที่วางที่ขอบระหว่างสองเซลล์จะส่องสว่างได้สองเซลล์ หากวางที่ขอบแนวตั้ง จะส่องซ้าย-ขวา หากวางที่ขอบแนวนอน จะส่องหน้า-หลัง กำหนด n และ m ให้หาจำนวนโคมไฟขั้นต่ำที่ต้องใช้เพื่อส่องสว่างพื้นทั้งหมด
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 5, m = 3 ผลลัพธ์จะได้ 8
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
res := (n * m + 1) / 2 คืนค่า res
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; #define N 100 int solve(int n, int m) { int res = (n * m + 1) / 2; return res; } int main() { int n = 5, m = 3; cout<< solve(n, m); return 0; }
ข้อมูลนำเข้า
5, 3
ข้อมูลส่งออก
8