59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
import sys
|
|
import os
|
|
import random
|
|
|
|
# Add backend to path
|
|
sys.path.append(os.path.abspath("/Users/hissin/测试/25-cxsj-final/backend"))
|
|
|
|
from problems.max_subarray.problem import MaxSubarrayProblem
|
|
from problems.interval_scheduling.problem import IntervalSchedulingProblem
|
|
from problems.n_queens.problem import NQueensProblem
|
|
from problems.knapsack.problem import KnapsackProblem
|
|
|
|
def test_max_subarray():
|
|
print("\nTesting Max Subarray...")
|
|
prob = MaxSubarrayProblem()
|
|
case = prob.generate_case(size=10)
|
|
res = prob.solve(case, "kadane")
|
|
print(f"Max Subarray Result: {res['result']}")
|
|
assert prob.verify(case, res['result'])
|
|
print("Max Subarray Passed!")
|
|
|
|
def test_interval_scheduling():
|
|
print("\nTesting Interval Scheduling...")
|
|
prob = IntervalSchedulingProblem()
|
|
case = prob.generate_case(size=10)
|
|
res = prob.solve(case, "greedy")
|
|
print(f"Interval Scheduling Count: {res['result_count']}")
|
|
assert prob.verify(case, res)
|
|
print("Interval Scheduling Passed!")
|
|
|
|
def test_n_queens():
|
|
print("\nTesting N-Queens...")
|
|
prob = NQueensProblem()
|
|
case = prob.generate_case(n=8)
|
|
res = prob.solve(case, "backtracking")
|
|
print(f"N-Queens (N=8) Solutions: {res['solution_count']}")
|
|
assert res['solution_count'] == 92
|
|
print("N-Queens Passed!")
|
|
|
|
def test_knapsack():
|
|
print("\nTesting Knapsack...")
|
|
prob = KnapsackProblem()
|
|
case = prob.generate_case(num_items=10, max_weight=20, max_value=100)
|
|
res_dp = prob.solve(case, "dp")
|
|
res_back = prob.solve(case, "backtracking")
|
|
|
|
print(f"Knapsack DP Value: {res_dp['max_value']}")
|
|
print(f"Knapsack Backtracking Value: {res_back['max_value']}")
|
|
|
|
assert res_dp['max_value'] == res_back['max_value']
|
|
assert prob.verify(case, res_dp)
|
|
print("Knapsack Passed!")
|
|
|
|
if __name__ == "__main__":
|
|
test_max_subarray()
|
|
test_interval_scheduling()
|
|
test_n_queens()
|
|
test_knapsack()
|