คำอธิบายปัญหา
สมมติว่าเรามีตัวเลข 5 ตัวคือ n, k1, k2, w และ b มีกระดาน 2 x n เซลล์ เซลล์แรก k1 ตัวในแถวแรก และ k2 ตัวแรกในแถวที่สอง เป็นสีขาว เซลล์อื่นเป็นสีดำ มีโดมิโนสีขาว w ชิ้น และโดมิโนสีดำ b ชิ้น (ขนาด 2x1) สามารถวางโดมิโนขาวได้ก็ต่อเมื่อเซลล์ทั้งสองเป็นสีขาวและว่าง โดมิโนดำวางได้ก็ต่อเมื่อเซลล์ทั้งสองเป็นสีดำและว่าง ต้องการตรวจสอบว่าวางโดมิโนทั้ง w+b ชิ้นได้หมดหรือไม่ (วางได้ทั้งแนวนอนและแนวตั้ง)
ตัวอย่าง: n = 5; k1 = 4; k2 = 3; w = 3; b = 1 ผลลัพธ์คือ True
ขั้นตอนการแก้ปัญหา
ถ้า 2*w <= (k1 + k2) และ 2*b <= (n - k1 + n - k2):
คืนค่า true
มิฉะนั้น:
คืนค่า false
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
bool solve(int n, int k1, int k2, int w, int b) {
if (2 * w <= (k1 + k2) && 2 * b <= (n - k1 + n - k2)) {
return true;
} else {
return false;
}
}
int main() {
int n = 5;
int k1 = 4;
int k2 = 3;
int w = 3;
int b = 1;
cout << solve(n, k1, k2, w, b) << endl;
}
อินพุต
5, 4, 3, 3, 1
เอาต์พุต
1