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为werewolfbool 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++) {// 初始化均为humanmemset(iswolf,true,sizeof(iswolf));// 创建说谎人的队列,存储下标queue<int>liar;//cout<<i<<" "<<j<<endl;// 认为第i个人和第j个人是狼人,这样就可以保证答案从小到大iswolf[i] = false;iswolf[j] = false;// 寻找有几个人是说谎的,以及说谎人是不是一个werewolf和humanfor(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;
}

PAT(甲级)1148 Werewolf - Simple Version(枚举)相关推荐

  1. PAT甲级 -- 1148 Werewolf - Simple Version (20 分)

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  2. 【PAT甲级题解记录】1148 Werewolf - Simple Version (20 分)

    [PAT甲级题解记录]1148 Werewolf - Simple Version (20 分) 前言 Problem:1148 Werewolf - Simple Version (20 分) Ta ...

  3. 【PTA Advanced】1148 Werewolf - Simple Version(C++)

    目录 题目 Input Specification: Output Specification: Sample Input 1: Sample Output 1: Sample Input 2: Sa ...

  4. PAT 1148 Werewolf – Simple Version – 甲级

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  5. 1148 Werewolf - Simple Version 甲级

    题意: 有n个玩家,有两个狼人,有两人说慌(其中一个为狼人一个为非狼人),找出狼人是谁? 题解: 暴力枚举 先枚举i和j为狼人,然后从1号开始假设其说谎,然后判断是否符合题目要求 代码: #inclu ...

  6. 1148 Werewolf - Simple Version

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  7. 1148 Werewolf - Simple Version (20 分)

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  8. 【PAT】A1148 Werewolf - Simple Version

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  9. PAT(甲级)2018年秋季考试 7-1 Werewolf - Simple Version (20 分)

    7-1 Werewolf - Simple Version (20 分) Werewolf(狼人杀) is a game in which the players are partitioned in ...

  10. PAT_A1148#Werewolf - Simple Version

    Source: PAT A1148 Werewolf - Simple Version (20 分) Description: Werewolf(狼人杀) is a game in which the ...

最新文章

  1. Cacti(一)之“better-cacti-templates”
  2. lettuce webdriver 自动化测试---玩转BDD
  3. getpass 模块
  4. Windows环境下使用Mycat模拟分库分表-读写分离案例
  5. Qt5.7+Opencv2.4.9人脸识别(六)Tcp,Mysql,3DES,XML综合
  6. 比特币怎么比特币钱包_5分钟内获得比特币
  7. 将ProudCity建立为开放组织
  8. [python]python学习笔记(三)——编译
  9. “英伦配”收视牛过本山,网管软件如何配奇兵
  10. 利用mysql的预编译机制_Mysqli的预编译机制处理批量数据过程
  11. 只包含因子2 3 5的数 (思维和二分)
  12. HanLP里使用DAT存取字典的方法
  13. 揭开A股38位「 90后」董事长的神秘面纱
  14. 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战
  15. 自然码官方辅助码键位图
  16. 华为彩信显示尚未激活服务器,华为手机无法接收彩信提示要开通gprs
  17. linux屏幕伽马值设置,设置计算机显示屏的亮度和对比度伽玛值
  18. Python人工智能实例 │ 使用Haar级联进行人脸检测、使用CAMShift算法、光流法进行人脸追踪
  19. 计算机网络——物理层
  20. RT-Thread简介

热门文章

  1. 管道工程和这个管道铺设过程中的电缆卫士--电缆故障测试仪 电缆测距 故障定点 路径查找 电缆综合故障测试仪 FB11
  2. 半胱氨酸表面修饰CdTe量子点;半胱氨酸修饰CdTe/CdS量子点;L-半胱氨酸修饰CdTe/CdS量子点(Cys)-CdTe/Cds定制供应
  3. 铁蛋白-AHLL纳米颗粒|人表皮生长因子-铁蛋白重链亚基纳米粒子(EGF-5Cys-FTH1)|铁蛋白颗粒包载氯霉素Chloramphenicol-Ferritin
  4. stata判断变量是不是唯一标识的命令?
  5. 网吧客户信息查询c语言,网吧经营管理之客户定位
  6. mysql sqlyog 乱码_SQLyog中文乱码的解决方法
  7. Faster-RCNN的关键点总结
  8. python基础坑点
  9. linux上mysql定时备份数据库数据_linux下如何实现mysql数据库每天自动备份定时备份...
  10. arduino as5048工作原理_普通精度应用的另一种选择——磁性旋转编码器