3642 - 选班委

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

某班要成立一个由4人组成的班委会,候选人有ABCDEFGH8位同学。
班主任征求8位同学的意见。
A说:我和谁都能很好地合作
B说:我愿意和C共事,如果C不当班委,我也不当。
C说:我跟D有矛盾,绝不能跟他一起当班委。
D说:如果H当班委,我希望也能让我当。
E说:我跟谁都可以共事。
F说:如果D当,我希望G也当。如果我和C都当了,我希望D也当。
G说:据我观察,B和C老对着干,他俩在一起啥事也别想干成。所以如果他俩都当,我就不当。另外,我也不愿意和A还有E一起共事。
H说:B和F有一人当,我就当,否则我不当。另外,如果C当,我希望G也当。
如果你是班主任,你会让哪四个人当班委?

题目输入

题目输出

假如ABCD适合当班委,程序应该输出ABCD

输入/输出样例

输入格式


                        

输出格式


                        

C++解答

#include <iostream>
using namespace std;
int t[9];
void f(int i)
{
	int a,b,c,cnt=0;
	if(i==8)
	{
		a=((t[3]==1&& t[6]==1)||t[3]==0);
		b=((t[5]+t[2]==2&&t[3]==1)||t[5]+t[2]==1);
		c=((t[2]==1&&t[6]==1)||t[2]==0);
		if((t[0]==0)&&(t[4]==0)&&((t[2]==1&&t[1]==0||t[1]==1)||(t[2]==0&&t[1]==0))&&(t[2]!=t[3])&&(t[7]==1||(t[7]==0&&t[3]==0))&&(t[6]==1&&t[1]+t[2]<=1||t[6]==0)&&(t[1]+t[5]>=1&&t[7]==1||t[7]==0)&&a&&b&&c)
		{
			cnt=0;
			for(i=0;i<=7;i++)
			{
			if(t[i]==1)
			cnt++;			
			}
			if(cnt==4)
			{
			for(i=0;i<=7;i++)
			{
				if(t[i]==1)
				cout<<char(i+'A');
			}
			cout<<endl;				
			}

		}
		return ;
	}
	t[i]=0;
	f(i+1);
	t[i]=1;
	f(i+1);
}
int main()
{
	f(0);
	return 0;
}