题目
题目链接
题解思维。
首先我们要明确这类问题不用计算机,我们会怎么去做。显然是推矛盾吧,就是假设哪些是狼人、哪些说了假话等等,根据每个人说的话推出矛盾就说明假设不合理,反之正确。
既然要推出矛盾就需要找到一些条件,如果推的过程中发现与条件违背,那么就说明不合理。
条件:
- 存在两个狼人
- 一个狼人说谎,一个狼人说实话
- 有两个人说谎
我不讲我乱七八糟的错误思路了,直接将柳神的!
枚举两个狼人,也就是假设某两个人是狼人(条件1),这也说明了剩下的人都是好人,这是我们的假设,也可以理解为当前枚举到的事实情况;每个人不是都发表了观点了嘛,那我们用每个人的观点与事实比较,把全部说谎的人记录下来;根据条件3,如果说谎人的数量不是2,那么找到错误,推出矛盾,即假设不合理;如果满足数量为2,还需再判断说谎的两个人是否满足其中一个是狼人一个是好人(条件2),只有当两个判断都满足了(条件2条件3)才算找到了一种解法。
代码#include
using namespace std;
int n, a[110];
int main()
{
cin >> n;
for (int i = 1;i > a[i];
for (int i = 1;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?