PAT 乙级 1089 狼人杀

Posted xidian-mao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 乙级 1089 狼人杀相关的知识,希望对你有一定的参考价值。

 1 #include  <bits/stdc++.h>
 2 using namespace std;
 3 const int N=107;
 4 int v[N],p[N]; int n; 
 5 int ans[5];    int cnt;
 6 int main ()
 7 {
 8     cin>>n;
 9     for (int i=1;i<=n;i++) {
10         cin>>v[i];
11         p[i]=1;
12     }
13     // p[i]=-1  表示第i个人是狼人
14     for (int i=1;i<n;i++)
15         for (int j=i+1;j<=n;j++) {
16             p[i]=-1; p[j]=-1;
17             for (int k=1;k<=n;k++) 
18                 if (p[abs(v[k])]*v[k]<0) {  // p[abs(v[k])]*v[k]<0 表示第k个人说谎
19                     ans[++cnt]=k;
20                     if (cnt>3)
21                         break;
22                 }
23             if (cnt==2&&p[ans[1]]+p[ans[2]]==0) {   // 两个说谎的人只有一个是狼人
24                 cout<<i<<" "<<j<<endl;
25                 return 0;
26             }
27             p[i]=1;  p[j]=1; cnt=0;  // 不要忘记初始化
28         }
29     cout<<"No Solution"<<endl;
30     return 0;
31 }

 

以上是关于PAT 乙级 1089 狼人杀的主要内容,如果未能解决你的问题,请参考以下文章

1089 狼人杀-简单版 (20分)

1089 狼人杀-简单版 (20 分)

微信小程序项目实例——狼人杀

狼人杀 — 水平阶级的划分

[转]直播新红海,狼人杀火爆背后的语音视频技术

教你在“狼人杀”中实现变声效果