25-cxsj-final/backend/verify_all.py

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()