C++程序检查能否按正确顺序将多米诺骨牌放置在彩色单元格上


假设我们有五个数字n、k1、k2、w和b。有一个2 x n个单元格的棋盘,第一行前k1个单元格和第二行前k2个单元格是白色的。所有其他单元格都是黑色的。我们有w个白色多米诺骨牌和b个黑色多米诺骨牌(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

更新于:2022年3月3日

浏览量:118

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.