快速回答:
Sequences(n) = (n-1)*(n-2) / 2
长答案:
你可以通过归纳来做到这一点。首先,我要重新陈述问题,因为您的问题陈述不够清楚。
S(n=3)
通过检查,我们发现只有一个 - 123
S(n=4)
通过检查,我们发现 3!- 123 234 和 1234
请注意,S(4) 包含 S(3),加上两个新的……都包括新的数字 4……嗯。
S(n=5)
通过检查,我们发现 ... S(n=4) 以及 345 2345 和 12345。总共 3+3=6。
我认为这里形成了一种模式。让我们定义一个新的函数 T。
- 规则 3:S(n) = S(n-1) + T(n) ... 对于某个 T。
我们知道 S(n) 包含数字 n,并且现在应该已经发现 S(n) 还包含(作为子组件)所有长度为 3 到 n 的序列,其中包括数字 n。我们知道它们不能在 S(n-1) 中,所以它们必须在 T(n) 中。
- 规则 4:T(n) 包含所有以 n 结尾且长度为 3 到 n 的序列。
S(n)中有多少个序列?
让我们回顾一下 S(3) S(4) 和 S(5),并合并 T(n):
- S(3) = S(3)
- S(4) = S(3) + T(4)
- S(5) = S(4) + T(5) = S(3) + T(4) + T(5)
让我们概括一下:
- 对于从 4 到 n 的所有 f,S(n) = S(3) + T(f)。
那么给定的 T 中有多少个呢?
回顾规则 5 - 它描述了多少个序列?
对于 T(4),它描述了所有以 4 结尾的序列 3 和更长的序列。(即 234)
对于 T(5),它描述了所有以 5 结尾的序列 3 和更长的序列。(即 345 2345 = 2)
T count Examples
4 2 1234 234
5 3 12345 2345 345
6 4 123456 23456 3456 456
看起来非常像 T(n) 只是 n-2 !
所以
S(6) = T(6) + T(5) + T(4) + S(3)
10 = 4 + 3 + 2 + 1
S(7) = 15 = 5 + 4 + 3 + 2 + 1 S(8) = 21 = 6 + 5 + 4 + 3 + 2 + 1
把它变成一个公式
2 * S(8) 是多少?
42 = 6 + 5 + 4 + 3 + 2 + 1 + 1 + 2 + 3 + 4 + 5 + 6
将每对最大和最小数字相加:
42 = 7 + 7 + 7 + 7 + 7 + 7
42 = 7 * 6
但这是 2 * S(8),所以
S(8) = 42/2 = 21 = 7 * 6 / 2
这概括了:
S(n) = (n-1)*(n-2) / 2
让我们检查一下这是否有效:
S(3) = 2*1/2 = 1
S(4) = 3*2/2 = 3
S(5) = 4*3/2 = 6
S(6) = 5*4/2 = 10
我很满意。