新手急需求解(要不然我的脑细胞会被杀完的)
某参观团按一下条件限制从ABCDE五个地方种选若干参观点:(1)如果去A,就必须去B;
(2)D和E只能去其中一个地方;
(3)B和C只能去其中一个地方;
(4)C和D要么都去,要么都不去;
(5)如果去E地,则必须去A和D。
问参观团能去哪几个让地方
/* 设要去的地方为1 ,不去的地方时0; 则: 1.if(a==1)b=1; 2.如果d是1,那么e是0;如果e是1,那么d是0;要么都不去: 即:(d^e==1)||(d|e==0); 3.同理 (b^c==1)||(b|c==0); 4.同理 c^d==0; 5.if(e==1) {a=1;d=1;} */ #include<stdio.h> int main(void){ int a,b,c,d,e; for(a=0;a<=1;a++) for(b=0;b<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++) for(e=0;e<=1;e++){ int bT=b,aT=a,dT=d;//因为要用到b,a,d,又不能改变它在循环中的值,就设置几个临时变量 if(e==1){ aT=1; dT=1; } if(a==1||aT==1) bT=1; if(((dT^e)==1||(dT|e)==0)&&((bT^c)==1||(bT|c)==0)&&(c^d)==0) printf("A is%d\nB is%d\nC is %d\nD is %d\nE is %d\n\n",aT,bT,c,dT,e); } scanf("%d",&a); }还不完美 不过大约就这样