最多可达成的换楼请求数目【二进制枚举】

1601. 最多可达成的换楼请求数目

解题思路:由于数据不超过20,所以二进制枚举是可行的

class Solution {
public:
    int maximumRequests(int n, vector<vector<int>>& requests) {
        int ans=0;
        int flag;
        int len=requests.size();
        for(int i=0;i<(1<<len);i++){   
            if(__builtin_popcount(i)<=ans){
                continue;
            }
            vector<int>vt(n,0);
            for(int j=0;j<len;j++){
                if(i&(1<<j)){
                    vt[requests[j][0]]--;
                    vt[requests[j][1]]++;
                }
            }
            flag=1;
            for(int j=0;j<n;j++){
                if(vt[j]!=0){
                    flag=0;
                    break;
                }
            }
            if(flag){
                ans=__builtin_popcount(i);
            }
        }
        return ans;
    }
};

 

posted @ 2022-02-28 23:12  夜灯长明  阅读(22)  评论(0编辑  收藏  举报