测试评估
| 指标 | 结果 |
|---|---|
| Base 测试 | PASS |
| Plus 测试 | PASS |
| 代码长度 | 1328 字符 |
模型生成的代码 (1328 字符)
def bell_number(n: int) -> int:
"""
Returns the n-th Bell number, which is the number of ways to partition a set of n elements.
The Bell numbers satisfy the recurrence:
B(0) = 1
B(n+1) = sum_{k=0}^{n} binom(n, k) * B(k)
This implementation uses dynamic programming for efficiency.
"""
if n < 0:
raise ValueError("n must be a non-negative integer")
bell = [0] * (n + 1)
bell[0] = 1
for i in range(1, n + 1):
for j in range(i):
# binom(i-1, j) * bell[j]
# We can compute binomial coefficient on the fly or precompute.
# Here we use the multiplicative formula to avoid large intermediate values.
pass
# A simpler dynamic programming approach is the Bell triangle (Aitken's array)
return _bell_triangle(n)
def _bell_triangle(n: int) -> int:
"""Compute n-th Bell number using Aitken's array / Bell triangle (O(n^2))."""
if n == 0:
return 1
# Only need to store the previous row
prev = [1] # row 0
for i in range(1, n + 1):
cur = [prev[-1]] # first element of new row is last element of previous row
for j in range(1, i + 1):
cur.append(cur[-1] + prev[j - 1])
prev = cur
return prev[0] # For row n, the first element is B_n
Base 失败测试用例
- 无失败测试
Plus 失败测试用例
- 无失败测试