1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// @Title: 最多可达成的换楼请求数目 (Maximum Number of Achievable Transfer Requests)
// @Author: 15816537946@163.com
// @Date: 2022-02-28 10:39:38
// @Runtime: 72 ms
// @Memory: 6.7 MB
func maximumRequests(n int, requests [][]int) (ans int) {
next:
    for mask := 0; mask < 1<<len(requests); mask++ {
        cnt := bits.OnesCount(uint(mask))
        if cnt <= ans {
            continue
        }
        delta := make([]int, n)
        for i, r := range requests {
            if mask>>i&1 == 1 {
                delta[r[0]]++
                delta[r[1]]--
            }
        }
        for _, d := range delta {
            if d != 0 {
                continue next
            }
        }
        ans = cnt
    }
    return
}