题目描述
以下文字摘自《灵机一动·好玩的数学》:“狼人杀”游戏分为狼人、好人两大阵营。

在一局“狼人杀”游戏中:

  • 1 号玩家说:“2 号是狼人”;
  • 2 号玩家说:“3 号是好人”;
  • 3 号玩家说:“4 号是狼人”;
  • 4 号玩家说:“5 号是好人”;
  • 5 号玩家说:“4 号是好人”。

已知这 5 名玩家中有 2 人扮演狼人角色,有 2 人说的不是实话,有且只有一只狼在说谎。扮演狼人角色的是哪两号玩家?

本题是这个问题的升级版:已知 N 名玩家中有 2 人扮演狼人角色,有 2 人说的不是实话,有且只有一只狼在说谎。

要求你找出扮演狼人角色的是哪几号玩家?

输入格式
输入在第一行中给出一个正整数 N。
随后 N 行,第 i 行给出第 i 号玩家说的话(1 ≤ i ≤ N),即一个玩家编号,用正号表示好人,负号表示狼人。

输出格式
如果有解,在一行中按递增顺序输出 2 个狼人的编号,其间以空格分隔,行首尾不得有多余空格。
若无解则输出 No Solution

如果解不唯一,则输出最小序列解,即对于两个序列 A: a1 ~ aM 和 B: b1 ~ bM,若存在 0 ≤ k < M 使得 ai = bi(i ≤ k),
且 ak+1 < bk+1,则称序列 A 小于序列 B。

数据范围
5 ≤ N ≤ 100

输入样例1
5
-2
+3
-4
+5
+4

输出样例1
1 4

输入样例2
6
+6
+3
+1
-5
-2
+4

输出样例2(解不唯一)
1 5

输入样例3
5
-2
-3
-4
-5
-1

输出样例3
No Solution


题解
枚举:

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;int p[110];
bool wolf[110];int main()
{int n;cin >> n;for (int i = 1; i <= n; i ++) cin >> p[i];for (int i = 1; i <= n; i ++)for (int j = i + 1; j <= n; j ++)                         {vector<int> ans;    memset(wolf, false, sizeof wolf);wolf[i] = wolf[j] = true;                               // 假设 i、j 是狼人for (int k = 1; k <= n; k ++)                           // 遍历所有人的发言,若与假设不符,则视为说谎{if(wolf[abs(p[k])] && p[k] > 0 || !wolf[abs(p[k])] && p[k] < 0) ans.push_back(k);}if(ans.size() == 2 && wolf[ans[0]] != wolf[ans[1]])     // 有两人说谎,且只有一个狼人{cout << i << " " << j << endl;return 0;}}cout << "No Solution" << endl;return 0;
}

PAT乙级 ——狼人杀-简单版相关推荐

  1. PAT 1089 狼人杀-简单版(20 分)(代码+测试点分析)

    1089 狼人杀-简单版(20 分) 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家 ...

  2. PAT 1089 狼人杀-简单版(20 分)- 乙级

    以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家说:"2 号是狼人" ...

  3. PAT 1089 狼人杀-简单版

    https://pintia.cn/problem-sets/994805260223102976/problems/1038429385296453632 以下文字摘自<灵机一动·好玩的数学& ...

  4. PAT 1089 狼人杀-简单版 C++实现 解题思路

    以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家说:"2 号是狼人" ...

  5. PAT乙级真题1089 || 狼人杀-简单版(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题]获取全部真题详解及代码示例,邀请大家加入PAT算法刷题交流qq群:821388108 个人博客:https://mzwang.to ...

  6. 「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1089 狼人杀-简单版 问题分析 题 ...

  7. PAT 乙级 1089  狼人杀-简单版

    1089 狼人杀-简单版 (20 point(s)) 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游 ...

  8. PAT Basic Level 1089 狼人杀-简单版 解题思路及AC代码 v0.96

    PAT 乙级 1089 狼人杀-简单版 1. 题目简述及在线测试位置 2. 基本思路 3. 完整AC代码 1. 题目简述及在线测试位置 1.1 N个人玩狼人杀,每个人 按从1到N的编号 顺序说明他人的 ...

  9. C++学习之路 | PTA乙级—— 1089 狼人杀-简单版(精简)

    1089 狼人杀-简单版 (20 分)以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀"游戏中,1 号玩家 ...

最新文章

  1. 【Web】HTTPS 引入http资源,混合内容
  2. python如何读入dat数据_python二进制dat数据怎么转成txt文本
  3. 生物计算机的发展和应用,计算机的发展及其在生物医学中的应用
  4. 用R语言实现信息度量
  5. 机器学习实战 - 读书笔记(05) - Logistic回归
  6. farcry5服务器不稳定,孤岛惊魂5玩起来很卡怎么办 远哭5游戏卡顿解决办法
  7. 无root权限安卓真机抓包HTTPS
  8. mysql触发器更新自己表_mysql触发器实例:更新表数据之前触发
  9. 制作maven模板框架
  10. 淘宝【高佣卷】、【精品券】、【详情图片】
  11. DataV平面地图组件全新升级_新功能带你抢先看
  12. Web在线打印设计器即将推出,像Excel一样在线设计模板
  13. 电脑开机只显示计算机界面,电脑开机只显示主板logo进不去系统是什么原因
  14. 双粗虚线中间一条实线_马路上实线两边有很粗的虚线(中间实线或虚线两边还有很粗的虚线是啥意思)...
  15. 【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
  16. 区块链与能源互联网的碰撞
  17. 小熊错误_实测99.9%的女生都说好用的化妆镜-小熊化妆镜
  18. The Wind River Registry on host localhost died unexpectedly
  19. Python实现模拟按键和改键精灵
  20. 个人理财第四课-哪里购买基金好?

热门文章

  1. 远离“电脑病”完全实用手册
  2. 细说工业品行业管理问题 ERP 维度云 进销存 工业品
  3. c语言十格表格找最大数字,c语言格式大整理
  4. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介(三)
  5. Java反射最全面总结(附代码)
  6. centos安装python3
  7. 我的火狐书签们------20171211
  8. Unity 麦扣老师的《小狐狸》学习记录
  9. python堆_Python实现堆
  10. 华为交换机如何导出配置信息_华为交换机作为服务端备份配置文件