找出Python中可以满足多少传输请求的程序
假设有n个宿舍房间,编号从0到n-1。宿舍房间里的学生想转移到另一个房间,他们提出了几个要求。宿舍没有空位,只有当另一名学生代替愿意转学的学生时,才会处理转学请求。因此,给定请求,我们必须找出可以满足多少请求。
所以,如果输入像n=3,requests=[[0,2],[1,0],[2,1]],那么输出将是3。
0号房间的学生转移到2号房间。
1号房间的学生转移到0号房间。
2号房间的学生转移到1号房间。
示例
让我们看下面的实现来更好地理解
from itertools import combinations def solve(n, requests): for k in range(len(requests), 0, -1): for c in combinations(range(len(requests)), k): d = [0] * n for i in c: d[requests[i][0]] -= 1 d[requests[i][1]] += 1 if not any(d): return k return 0 print(solve(3, [[0,2],[1,0],[2,1]]))
输入
3, [[0,2],[1,0],[2,1]]输出结果
3