PTA(Basic Level) 1089:狼人杀-简单版 (C语言实现)

PTA(Basic Level) 1089:狼人杀-简单版 (C语言实现)

分析:
①有一个狼人说谎,一个好人说谎;
②判断有人说谎:如果狼人说另一个人是狼人,如果这个人是好人,或者狼人说另一个人是好人,如果这个人是狼人,则狼人说谎。(有点绕,看代码比较好理解)
参考代码:

https://blog.csdn.net/mask1010/article/details/101373877

#include 

int main()
{
	int i,j,k,n,a[101]={0},c1=0,c2=0,flag=0;
	scanf("%d",&n);
	for(i=1; i<=n; i++)
		scanf("%d",&a[i]);
	for(i=1; i<=n; i++)//第一个狼人
	{
		for(j=i+1; j<=n; j++)//第二个狼人
		{
			c1=0,c2=0;
			for(k=1; k<=n; k++)//说谎的人
			{
				if((a[k]<0 && -a[k]!=i && -a[k]!=j) || (a[k]>0 && (a[k]==i||a[k]==j)))//有人说慌
				{
					if(k!=i&&k!=j)//好人说谎
						c1++;
					else//狼人说谎
						c2++;
				}
			}
			if(c1==1 && c2==1)
			{
				printf("%d %d",i,j);
				flag=1;
				break;
			}
		}
		if(flag) break;
	}
	if(!flag)
		printf("No Solution");
	return 0;
}

你可能感兴趣的:(PTA(basic,level))