Mbpp/67

✅ 完美通过 Base: PASS Plus: PASS
测试评估
指标结果
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 失败测试用例
  • 无失败测试