mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 15:01:08 +00:00
Bug fix combinations (#11158)
* Update all_combinations.py The original implementation had limitations in handling edge cases and certain input parameters, leading to potential RecursionError. * Update all_combinations.py Added checks to handle cases where n or k are negative or where k is greater than n. In such scenarios, the function now returns an empty list, avoiding invalid recursive calls. * Update error handling Added checks to handle cases where `n` or `k` are negative or where `k` is greater than `n`. In such scenarios, the function now returns an empty list, avoiding invalid recursive calls. * Update backtracking/all_combinations.py * Update all_combinations.py --------- Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
parent
4151a13b57
commit
050b2a6e2c
|
@ -26,9 +26,11 @@ def generate_all_combinations(n: int, k: int) -> list[list[int]]:
|
|||
>>> generate_all_combinations(n=10, k=-1)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
RecursionError: maximum recursion depth exceeded
|
||||
ValueError: k must not be negative
|
||||
>>> generate_all_combinations(n=-1, k=10)
|
||||
[]
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: n must not be negative
|
||||
>>> generate_all_combinations(n=5, k=4)
|
||||
[[1, 2, 3, 4], [1, 2, 3, 5], [1, 2, 4, 5], [1, 3, 4, 5], [2, 3, 4, 5]]
|
||||
>>> from itertools import combinations
|
||||
|
@ -36,6 +38,10 @@ def generate_all_combinations(n: int, k: int) -> list[list[int]]:
|
|||
... for n in range(1, 6) for k in range(1, 6))
|
||||
True
|
||||
"""
|
||||
if k < 0:
|
||||
raise ValueError("k must not be negative")
|
||||
if n < 0:
|
||||
raise ValueError("n must not be negative")
|
||||
|
||||
result: list[list[int]] = []
|
||||
create_all_state(1, n, k, [], result)
|
||||
|
|
Loading…
Reference in New Issue
Block a user