【甲级PAT】

阅读: 评论:0

【甲级PAT】

【甲级PAT】

题目描述

1148 Werewolf - Simple Version (20分)

狼人杀游戏:共给出N个玩家,其中两人是狼人。总共有两个人在说谎,一人是狼人、一人是平民
第一行N表示共N个玩家,接下来N行数字,正数代表人类,负数代表狼人。输出狼人的序号

英语

Werewolf(狼人杀)
ascending order 升序

思路

先确定狼人,然后找说谎的人,如果说谎的人有两个且其中有一个是狼人就输出结果。

代码一:

#include<bits/stdc++.h>using namespace std;
int a[120],vis[120];
vector <int> vc;int main(){#ifdef ONLINE_JUDGE#elsefreopen(&#", "r", stdin);#endifint n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];//存储发言的内容for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){fill(vis,vis+n+1,1);//初始化都不是狼人vis[i]=vis[j]=-1;//i和j是狼人vc.clear();//vc存储说谎的人for(int k=1;k<=n;k++)if(a[k]*vis[abs(a[k])]<0)vc.push_back(k);if(vc.size()==2&&vis[vc[0]]+vis[vc[1]]==0){cout<<i<<" "<<j<<endl;return 0;}}}cout<<"No Solution"<<endl;return 0;
}

代码二:(更好理解一点)

#include<bits/stdc++.h>using namespace std;
int N;
int mystate[110];bool judge(int a,int b);int main(){scanf("%d",&N) ;int i,x,j;for(i=1;i<=N;++i){scanf("%d",&mystate[i]);}for(i=1;i<=N;++i){for(j=i+1;j<=N;++j){if(judge(i,j)){printf("%d %dn",i,j);return 0;}}}printf("No Solutionn");return 0;
}bool judge(int a,int b){int cntwol=0,cntpeo=0;int i,x;for(i=1;i<=N;++i){if(cntwol>1 || cntpeo>1){return false;}x=mystate[i];if(x>0){//人 if(x==a || x==b){if(i==a || i==b){++cntwol;}else{++cntpeo;}
//				printf("i=%dn",i);}}else{//狼 x=-x;if(x!=a && x!=b){if(i==a || i==b){++cntwol;}else{++cntpeo;}
//				printf("i=%dn",i);}}}if(cntwol==1 && cntpeo==1){return true;}else{return false;}
}

参考:?
?

本文发布于:2024-02-02 18:32:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170687015245660.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:PAT
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23