PAT(甲级)1148 Werewolf - Simple Version(枚举)

2023-11-09

Description

狼人杀游戏,第几个人说第几个人是狼人或者是人,规定所有人中有两个狼人,其中只有一个狼人和一个人说谎,要求找出两个狼人

Input

第一行n,代表n个人
接下来n行
正数 Di 代表:第i个人说第Di人是human
负数 Di 代表:第i个人说第Di(绝对值)人是werewolf

Output

输出两个werewolf的下标,一个空格,如果有多个答案,输出最小的序列

解题思路

算法标签:枚举
显然就是枚举任意两个人是狼人,统计n个人说谎的人数,如果说话人数为两人,且一个为狼人另一个为人,当然没有规定这两个人谁是狼人谁是人,只是要求其中一个是狼人,另一个是人就行,遍历从小到大遍历,第一个找到的自然是最小的,无任何算法,不需要任何技巧,简单遍历即可(没玩过狼人杀但是可以百度啊!没吃过猪肉还没见过猪跑嘛)

代码

//freopen("hao.txt","r",stdin);
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std;
const int N = 105;
int main()
{
	int n = 0;
	int statement[N] = {0};
	bool isans = false;
	// ture为human,false为werewolf
	bool iswolf[N];
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>statement[i];

	for(int i=1;i<n;i++) {

		for(int j=i+1;j<=n;j++) {
			// 初始化均为human
			memset(iswolf,true,sizeof(iswolf));
			// 创建说谎人的队列,存储下标
			queue<int>liar;
			//cout<<i<<" "<<j<<endl;
			// 认为第i个人和第j个人是狼人,这样就可以保证答案从小到大
			iswolf[i] = false;
			iswolf[j] = false;

			// 寻找有几个人是说谎的,以及说谎人是不是一个werewolf和human
			for(int k=1;k<=n;k++) {
				if((statement[k]>0)&&(iswolf[abs(statement[k])]==false))
					liar.push(k);
				else if((statement[k]<0)&&(iswolf[abs(statement[k])]==true))
					liar.push(k);
			}

			if(liar.size()==2) {
				int liar_a = liar.front();
				int liar_b = liar.back();

				if(iswolf[liar_a]==true && iswolf[liar_b]==false) {
					cout<<i<<" "<<j;
					isans = true;
					break;
				}
				else if(iswolf[liar_a]==false && iswolf[liar_b]==true) {
					cout<<i<<" "<<j;
					isans = true;
					break;
				}
			}
		}
		if(isans)
			break;
	}
	// 判断是否有答案
	if(!isans)
		cout<<"No Solution";
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PAT(甲级)1148 Werewolf - Simple Version(枚举) 的相关文章

  • UTC、RTC、UNIX时间戳、localtime 理解

    UTC RTC UNIX时间戳 localtime 理解 UTC 时间 UTC是世界协调时间时 UTC 是现在全球通用的时间标准 全球各地都同意将各自的时间进行同步协调 UTC 时间是经过平均太阳时 以格林威治时间GMT为准 地轴运动修正后
  • 集合框架( ArrayList LinkedList)

    集合框架 存储多个数据 对象 使用数组 数组 存储相同数据类型一段连续的空间 限制 定长 添加 删除 统计比较麻烦 存储的是单列的值 学号 学生信息 订单号 订单详情 中文名称 英文名称 集合框架 一些接口和类 java util包 Col
  • 泛型反射,如何用泛型反射获得当前类泛型的具体类型

    有时候我们需要知道当前类所传入的泛型的具体类型而进行下一步操作 这是我们可以使用泛型反射 1 假如Dao层的接口有很多共同的方法 增删改查 我们可以对他进行提取到一个公共接口IBaseDao
  • 地质灾害监测的主要内容

    地质灾害就地质环境或地质体变化的速度而言 可分为突发性地质灾害与缓变性地质灾害两大类 其中崩塌 滑坡 泥石流是地质灾害的主要表现形式 我国是地质灾害多发的国家 全国共有较大型崩塌3000多处 滑坡2000多处 泥石流2000多处 中小规模的
  • 通过JavaAPI访问HBase

    先开始创建表 create emp001 member id address info 放入数据 put emp001 Rain id 31 put emp001 Rain info birthday 1990 05 01 put emp0
  • 九、1~8文章的阶段案例

    一 案例 现在我们来做一个相对综合一点的练习 书籍购物车 案例说明 1 在界面上以表格的形式 显示一些书籍的数据 2 在底部显示书籍的总价格 3 点击 或者 可以增加或减少书籍数量 如果为1 那么不能继续 4 点击移除按钮 可以将书籍移除
  • 最大权值闭合子图的证明详解

    前面定义部分转自这篇博客 网络流 最小割求最大权闭合子图 定义 有一个有向图 每一个点都有一个权值 可以为正或负或0 选择一个权值和最大的子图 使得每个点的后继都在子图里面 这个子图就叫最大权闭合子图 能选的子图有 4 3 4 2 4 1
  • CocosCreator ios 使用sdl库找不到arm64指令集

    关于sdl如何打包成ios库 android库的问题 之后会有相关文章介绍 现在先说一下CocosCreator在使用xcode运行过程中 会报的一个错 Undefined symbols for architecture arm64的错误
  • Android墓碑以及ANR跟踪文件路径

    ANR data anr 墓碑 data tombstones
  • Hadoop-3.2.3集群搭建

    Hadoop 3 2 3集群搭建 一 准备工作 准备三台最小化安装的Linux服务器 单节点伪集群一台虚拟机即可 hdfs配置副本数设置为1 worker只有一个 ipaddress hostname 192 168 116 10 hado
  • 华为2288H-V5 组RAID安装系统(描述安装系统)

    先说下兼容性我这里是bios是最新的19版 和17版有些许差异 windows方面不支持windows2012以下的版本 2008R2再见 linux方面支持常用的linux系统如红帽6 9 6 10 7 4以上系统 7 0 7 3这些不支
  • k8s与log--利用fluent bit收集k8s日志

    前言 收集日志的组件多不胜数 有ELK久负盛名组合中的logstash 也有EFK组合中的filebeat 更有cncf新贵fluentd 另外还有大数据领域使用比较多的flume 本次主要说另外一种 和fluentd一脉相承的fluent
  • 如何更新R

    更新R版本 1 直接安装install packages installr 然后 library installr 再updateR 2 把原来的R删掉 再到官网下载 The R Project for Statistical Comput
  • Java中变量详解(类的五成员之一:变量)

    目录 友情提醒 概述 Java中的成员包含五部分 第一部分 变量 1 Java中的变量分类 2 成员变量和局部变量的位置区别 3 Java中成员变量作用域 Java权限修饰符 4 Java中成员变量和成员属性的区别 5 成员变量初始化方式
  • Numbers on Whiteboard (codeforces1430)(数学分析)

    Numbers 1 2 3 each integer from 1 to once are written on a board In one operation you can erase any two numbers and from
  • LeetCode 刷题记录14. 最长公共前缀

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串 说明 示例 1 输入 strs flower flow flight 输出 fl 示例 2 输入 strs dog racecar car 输出 解释
  • 修改网页logo图片

    在html的head代码区加入以下代码 保存刷新页面即可
  • Lua基础之字符串(string)

    1 计算字符串长度 2 返回字符串s的n个拷贝 3 返回字符串全部字母大写 4 返回字符串全部字母小写 5 返回一个类似printf的格式化字符串 6 根据下标截取字符串 7 在字符串中查找 8 在字符串中替换 9 返回字符的整数形式 10
  • 二叉树系列(1)已知二叉树的中序遍历和前序遍历,如何求后序遍历

    一道HULU的笔试题 How I wish yesterday once more 假设有棵树 长下面这个样子 它的前序遍历 中序遍历 后续遍历都很容易知道 PreOrder GDAFEMHZ InOrder ADEFGHMZ PostOr

随机推荐

  • nlp-如何实现编写BERT模型

    致谢 本文主要由浙江大学李泺秋撰写 前言 建议通过pycharm vscode等工具对bert源码进行单步调试 调试到对应的模块再对比看讲解 涉及到的jupyter可以在代码库 篇章3 编写一个Transformer模型 BERT 下载 本
  • Spring MVC 使用JSR303校验表单

    导入JSR303相关JAR包 Spring MVC 使用JSR303校验表单 创建registerForm jsp
  • 英伟达合作伙伴选择RTX 2080Ti作为深度学习-人工智能解决方案

    Scientific在9月6日发布新闻称 英伟达 Nvidia 全球服务器供应商之一AMAX将最新的GeForce RTX 2080 Ti图形卡集成到深度学习 人工智能以及HPC高性能计算服务器的解决方案阵容中 新的GeForce RTX
  • matplotlib.pyplot.hist绘制直方图函数

    matplotlib pyplot hist x bins 10 range None normed False weights None cumulative False bottom None histtype u bar align
  • 小程序点击复制功能制作

    在wxml文件中添加一个按钮或需要点击的元素 并绑定点击事件监听器2
  • RabbitMQ报错Error: unable to connect to node rabbit@xxx: nodedown的解决方式

    RabbitMQ报错Error unable to connect to node rabbit xxx nodedown的解决方式 环境 Win10x64 erlang otp 19 1x64 RabbitMQ3 6 6 刚开始研究Rab
  • 【前端领域】3D旋转超美相册(HTML+CSS)

    世界上总有一半人不理解另一半人的快乐 爱玛 目录 一 前言 二 本期作品介绍 3D旋转相册 三 效果展示 四 详细介绍 五 编码实现 index html style css img 六 获取源码 公众号获取源码 获取源码 私信 关注 点赞
  • KVM内核代码结构

    KVM内核代码结构 因为KVM的源代码已经包含在了Linux的内核树中 因此我们只需直接从www kernel org下载代码即可 内核源码包打开较大 解开后目录结构大概是这个样子 涉及KVM的主要有两个目录 virt和arch x86 k
  • [游戏开发]Unity业务代码自动生成工具

    前言 项目里有非常多的重复代码 例如UI业务逻辑 一般来说都会生成Manager Module View层代码 这是基本的MVC架构 Manger层 负责数据维护 对照Proto把CS和SC通信代码都写上 Module层 如果有变化则从Ma
  • 《Java基础篇》JavaBean的生命周期·作用域·通俗易懂

    1 基本概念 bean 就是由IOC 容器初始化 装配及管理的对象 Spring中的bean默认都是单例的 那么单例Bean在多线程程序下如何保证线程安全呢 Spring的单例是基于BeanFactory也就是Spring容器的 单例Bea
  • 西门子PLC入门-PLC介绍

    PLC全名 可编程逻辑控制器 Programmable Logic Controller 一种具有微处理器的用于自动化控制的数字运算控制器 可以将控制指令随时载入内存进行储存与执行 PLC由CPU 指令及数据内存 输入 输出接口 电源 数字
  • Java并发编程面试题

    基础知识 并发编程的优缺点 为什么要使用并发编程 并发编程的优点 充分利用多核CPU的计算能力 通过并发编程的形式可以将多核CPU的计算能力发挥到极致 性能得到提升 方便进行业务拆分 提升系统并发能力和性能 在特殊的业务场景下 先天的就适合
  • Hive中not in函数的小坑 :含null时的判断

    Hive中的not in函数有一个隐藏的陷阱 当not in 中的数值包含NULL 匹不上的数据会返回NULL而不是True 所以当在where中使用not in子查询进行筛选 一定要记得去除NULL值 样例代码 not in的原始结果 s
  • 打开文件,读取TXT

  • 通过HttpURLConnection连接上传文件和参数并接收

    网上使用HttpURLConnection通过get或post请求传递参数或者传递文件的例子有很多 但是同时传递参数和文件 服务的并接收参数和文件的例子很少 此文将介绍同时发送参数和文件并接收 1 HttpURLConnection简介 任
  • 产品经理的思考-我们是技术的主人吗?

    思考的起源 最近在准备公司内部的研发大会的汇报时 发现我们组的成员都跟我一样 是技术出身 在努力或者被迫努力的往技术产品经理的维度转变 晚上准备PPT到凌晨三点多 在最后收尾的时候 脑海里突然有几个疑问 在技术维 我们是技术的主人还是技术的
  • LFSR:线性反馈移位寄存器及其应用

    LFSR简介 LFSR Linear feedback shift register 是一种特殊的的移位寄存器 他的输入取决于其先前状态 LFSR的使用异常广泛 可以说涉及到方方面面 以下是Wikipedia列举的一些应用 INTELSAT
  • jquery 计算时间差

    用正则 且精确到秒 function Days1 date1 date2 var date3 date1 getTime date2 getTime 时间差的毫秒数 计算出相差天数 var days Math floor date3 24
  • Vue3使用方法

    Vue3相比于Vue2 解决了 Vue2中新增属性 删除属性 界面不会更新的问题 解决了 Vue2中直接通过下标修改数组 界面不会刷新的问题 vue cli版本必须是4 5以上 查看版本命令 vue V 创建工程命令 vue create
  • PAT(甲级)1148 Werewolf - Simple Version(枚举)

    Description 狼人杀游戏 第几个人说第几个人是狼人或者是人 规定所有人中有两个狼人 其中只有一个狼人和一个人说谎 要求找出两个狼人 Input 第一行n 代表n个人 接下来n行 正数 Di 代表 第i个人说第Di人是human 负