สมมติว่าเรามีตัวเลขห้าตัว n, k1, k2, w และ b มีกระดานที่มีเซลล์ 2 xn และเซลล์ k1 แรกในแถวแรก เซลล์ k2 แรกในแถวที่สองจะมีสีขาว เซลล์อื่นๆ ทั้งหมดเป็นสีดำ เรามีโดมิโนสีขาวและโดมิโนสีดำขดำ (ขนาด 2 x 1) เราสามารถวางโดมิโนสีขาวไว้บนกระดานได้ถ้าเซลล์ของกระดานทั้งสองเป็นสีขาวและไม่มีโดมิโนอื่นครอบครอง ในทำนองเดียวกัน โดมิโนสีดำสามารถวางได้ถ้าเซลล์ทั้งสองเป็นสีดำและไม่ถูกครอบครองโดยโดมิโนอื่น เราต้องตรวจสอบว่าเราสามารถวางแต้ม w + b ทั้งหมดบนกระดานได้หรือไม่ว่าวางทั้งแนวนอนและแนวตั้งหรือไม่
ดังนั้น ถ้าอินพุตเป็น n =5; k1 =4; k2 =3; w =3; b =1 ผลลัพธ์จะเป็น True
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
if 2 * w <= (k1 + k2) and 2 * b <= (n - k1 + n - k2), then: return true Otherwise return false
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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