
发现n最多只到15,想到暴力枚举。
具体思路:二进制枚举,1代表好人,0代表坏人。然后看是否与实际情况是否相符(j->k为1但是i的二进制第k位为0 或者 j->k为0但是i的二进制第k位为1)即可。
i枚举状态 每一位1代表好人0代表坏人
j代表第j个人
不符实际情况:s[j][k]==1&& (1<
class Solution {
public:
int maximumGood(vector>& s) {
int n = s.size();
int ans = 0;
for (int i = 0; i < (1 << n); ++i) {
int j = 0, cnt = 0, flag = false;
while ((1 << j) <= i && !flag) {
if ((1 << j) & i) {
cnt++;
for (int k = 0; k < n; ++k) {
if ((s[j][k] == 1 && !((1<欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)