HJ93 数组分组

发布时间 2023-04-28 11:55:57作者: Aneverforget

修改1:

 修改2:

 修改3:(正确答案)

  修改4:优化修改3。在修改3代码实现,尽管找到了一组可行的true,但仍然会执行后面的递归。

可进行优化找到一组true后不再进行后面的递归尝试。优化实现方式是,找到一组true后,之后其他递归全部执行返回。

 1 #no=input()
 2 a=list(map(int,input().split()))
 3 team1,team2,team3=[],[],[]
 4 for i in a:
 5     if i%5==0:
 6         team1.append(i)
 7     elif i%3==0:
 8         team2.append(i)
 9     else:
10         team3.append(i)
11 def recursion(team1,team2,team3):
12     if team3==[]:#基本结束条件        
13         if sum(team1)==sum(team2):
14             return True
15         else:
16             return False
17     if recursion(team1+team3[:1],team2,team3[1:]):#第一个递归方向
18         return True
19     if recursion(team1,team2+team3[:1],team3[1:]):#第二个递归方向
20         return True
21 if recursion(team1,team2,team3):
22     tem="true"
23 else:
24     tem="false"
25 
26 print(tem)