建设厅网站注册后多长时间开通,免费外链发布,湘汝企业大黄页,盗版视频网站怎么做的文章目录1. 题目2. 解题1. 题目
游戏中存在两种角色#xff1a;
好人#xff1a;该角色只说真话。坏人#xff1a;该角色可能说真话#xff0c;也可能说假话。
给你一个下标从 0 开始的二维整数数组 statements #xff0c;大小为 n x n #xff0c;表示 n 个玩家对彼…
文章目录1. 题目2. 解题1. 题目
游戏中存在两种角色
好人该角色只说真话。坏人该角色可能说真话也可能说假话。
给你一个下标从 0 开始的二维整数数组 statements 大小为 n x n 表示 n 个玩家对彼此角色的陈述。
具体来说statements[i][j] 可以是下述值之一
0 表示 i 的陈述认为 j 是 坏人 。1 表示 i 的陈述认为 j 是 好人 。2 表示 i 没有对 j 作出陈述。
另外玩家不会对自己进行陈述。形式上对所有 0 i n 都有 statements[i][i] 2 。
根据这 n 个玩家的陈述返回可以认为是 好人 的 最大 数目。
示例 1
输入statements [[2,1,2],[1,2,2],[2,0,2]]
输出2
解释每个人都做一条陈述。
- 0 认为 1 是好人。
- 1 认为 0 是好人。
- 2 认为 1 是坏人。
以 2 为突破点。
- 假设 2 是一个好人- 基于 2 的陈述1 是坏人。- 那么可以确认 1 是坏人2 是好人。- 基于 1 的陈述由于 1 是坏人那么他在陈述时可能- 说真话。在这种情况下会出现矛盾所以假设无效。- 说假话。在这种情况下0 也是坏人并且在陈述时说假话。- 在认为 2 是好人的情况下这组玩家中只有一个好人。
- 假设 2 是一个坏人- 基于 2 的陈述由于 2 是坏人那么他在陈述时可能- 说真话。在这种情况下0 和 1 都是坏人。- 在认为 2 是坏人但说真话的情况下这组玩家中没有一个好人。- 说假话。在这种情况下1 是好人。- 由于 1 是好人0 也是好人。- 在认为 2 是坏人且说假话的情况下这组玩家中有两个好人。
在最佳情况下至多有两个好人所以返回 2 。
注意能得到此结论的方法不止一种。示例 2
输入statements [[2,0],[0,2]]
输出1
解释每个人都做一条陈述。
- 0 认为 1 是坏人。
- 1 认为 0 是坏人。
以 0 为突破点。
- 假设 0 是一个好人- 基于与 0 的陈述1 是坏人并说假话。- 在认为 0 是好人的情况下这组玩家中只有一个好人。
- 假设 0 是一个坏人- 基于 0 的陈述由于 0 是坏人那么他在陈述时可能- 说真话。在这种情况下0 和 1 都是坏人。- 在认为 0 是坏人但说真话的情况下这组玩家中没有一个好人。- 说假话。在这种情况下1 是好人。- 在认为 0 是坏人且说假话的情况下这组玩家中只有一个好人。
在最佳情况下至多有一个好人所以返回 1 。
注意能得到此结论的方法不止一种。提示
n statements.length statements[i].length
2 n 15
statements[i][j] 的值为 0、1 或 2
statements[i][i] 2来源力扣LeetCode 链接https://leetcode-cn.com/problems/maximum-good-people-based-on-statements 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
n比较小把每个人是好人还是坏人的实际情况看成 int 的 n 位 01 二进制位枚举每种状态遍历该状态下的好人说的话有没有矛盾的
class Solution {
public:int maximumGood(vectorvectorint statements) {int n statements.size(), ans 0;for(int state 1; state (1n); state){bool stop false;int count 0;for(int j 0; j n; j){ // 遍历该状态下每个人是好人还是坏人if((statej)1) // j 是好人{count;for(int k 0; k n; k){ // 好人说的话if(statements[j][k]2){ if(statements[j][k] ((statek)1) ) // 没有矛盾continue;else{stop true;break;}}}if(stop)break;}}if(!stop)//该状态所有好人说的话都没有矛盾ans max(ans, count);}return ans;}
};112 ms 8.2 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步