PAT 狼人杀
2021-03-12 本文已影响0人
Tsukinousag
原题链接
时隔一年拿到这道题,又是一脸懵逼
。。。
两个狼人都枚举过去一下就行,醉了呀
先用a数组对全部人初始化好人,然后双指针枚举狼人,枚举完狼人后,再在该种情况下枚举自己说别人的话和别人的身份是否有矛盾,若有矛盾,说明自己在说谎,就加入lie中
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int>v(n+1);
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
vector<int>a(n+1,1),lie;
a[i]=-1,a[j]=-1;//先枚举两头狼
//然后枚举村民说的话
for(int k=1;k<=n;k++)
{
if(v[k]*a[abs(v[k])]<0) lie.push_back(k);
}
if(lie.size()==2&&a[lie[0]]+a[lie[1]]==0)
{
cout<<i<<" "<<j<<endl;
return 0;
}
}
}
cout<<"No Solution"<<endl;
return 0;
}