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;
}
上一篇 下一篇

猜你喜欢

热点阅读