笔试.点菜"/>
美团笔试.点菜
自己刚开始没思路。。
看到n最大到20,小于25,可以想到用二进制dfs做。。。
int bits(int n) {int cnt = 0;while (n) {cnt++;n &= (n - 1);}return cnt;
}
int f(const vector<vector<int>>& nums, int m) {int n = nums.size(), ans = 1;for (int i = 1; i <= (1 << n) - 1; ++i) {vector<int> flag(m + 1);bool f2 = true;for (int j = 0; (1 << j) <= i && f2; ++j) {if (!(i & (1 << j))) continue;if (!flag[nums[j][0]]) flag[nums[j][0]] = 1;else f2 = false;if (!flag[nums[j][1]]) flag[nums[j][1]] = 1;else f2 = false;}if (f2) ans = max(ans, bits(i));}return ans;
}
更多推荐
美团笔试.点菜
发布评论