2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
id: 5900f3df1000cf542c50fef1
|
2021-11-23 11:06:14 -08:00
|
|
|
|
title: '问题 115:计数块组合 II'
|
2018-10-10 18:03:03 -04:00
|
|
|
|
challengeType: 5
|
2021-02-06 04:42:36 +00:00
|
|
|
|
forumTopicId: 301741
|
2021-01-13 03:31:00 +01:00
|
|
|
|
dashedName: problem-115-counting-block-combinations-ii
|
2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --description--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
一排长度为 `n` 个单位的行上放置了最小长度为 `m` 个单位的红色块,这样任何两个红色块(允许长度不同)至少被一个黑色方块隔开。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
让填充计数函数,$F(m, n)$,表示可以填充的行数。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
例如, $F(3, 29) = 673135$,$F(3, 30) = 1089155$。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
就是说,对于 m = 3,可以看出 n = 30 是函数结果超过 100 万的最小 n 值。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
同样,对于 m = 10,可以验证 $F(10, 56) = 880711$ 和 $F(10, 57) = 1148904$。即函数第一次超过 100 万的 n 最小值为 57。
|
2021-07-15 13:04:11 +05:30
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
对于 m = 50,找到最小值 `n` 的值,让函数第一次超过 100 万。
|
2021-02-06 04:42:36 +00:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
**注意:** 这是问题 114 的一个困难版本。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --hints--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2021-11-23 11:06:14 -08:00
|
|
|
|
`countingBlockTwo()` 应该返回 `168`。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2021-07-15 13:04:11 +05:30
|
|
|
|
assert.strictEqual(countingBlockTwo(), 168);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
|
|
```js
|
2021-07-15 13:04:11 +05:30
|
|
|
|
function countingBlockTwo() {
|
2021-01-13 03:31:00 +01:00
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-15 13:04:11 +05:30
|
|
|
|
countingBlockTwo();
|
2021-01-13 03:31:00 +01:00
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --solutions--
|
2020-08-13 17:24:35 +02:00
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
|
```js
|
|
|
|
|
// solution required
|
|
|
|
|
```
|