主题:请教
强强
[专家分:4740] 发布于 2007-05-11 22:52:00
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
回复列表 (共8个回复)
沙发
senir092 [专家分:10] 发布于 2007-05-11 23:30:00
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
有问题啊
如果E参加,那么A和D也都参加。A参加时,B也参加;此时E、A、D、B都
参加了,又C和D或者都参加,或者都不参加,所以即然D参加了C肯定也参加了,那么就全都参加了,但是题目里又说B和C只有一个人参加,这不是相矛盾了吗??
板凳
&佑慧妹妹& [专家分:660] 发布于 2007-05-12 10:24:00
楼上,根据我的推断,这题没有问题,所以,应该说,你假设的这种不成立。
CLS
print "a","b","c","d","e"
FOR a = 0 TO 1
FOR b = 0 TO 1
IF a = 1 THEN b = 1
FOR c = 0 TO 1
IF b + c = 1 THEN
FOR d = 0 TO 1
IF c = d THEN
FOR e = 0 TO 1
IF d + e = 1 OR d + e = 2 THEN
IF e = 1 AND a = 1 AND d = 1 OR e = 0 THEN
PRINT a, b, c, d, e
END IF
END IF
NEXT e
END IF
NEXT d
END IF
NEXT c
NEXT b
NEXT a
3 楼
&佑慧妹妹& [专家分:660] 发布于 2007-05-12 10:26:00
结果是: a b c d e
0 0 1 1 0
也就是说C和D去。
根据条件: (1)A参加时,B也参加;(A没去,B也没去)
(2)B和C只有一个人参加;(C参加了,B没有)
(3)C和D或者都参加,或者都不参加;(C和D都参加了)
(4)D和E中至少有一个人参加;(D参加了,E没有)
(5)如果E参加,那么A和D也都参加。(E没有参加,A也没有,D参加了)
4 楼
Matodied [专家分:7560] 发布于 2007-05-12 13:57:00
CLS
FOR a = 0 TO 1
FOR b = 0 TO 1
FOR c = 0 TO 1
FOR d = 0 TO 1
FOR e = 0 TO 1
IF a = 0 OR a + b = 2 THEN
IF b + c = 1 THEN
IF (c + d) MOD 2 = 0 THEN
IF d + e >= 1 THEN
IF e = 0 OR e + a + d = 3 THEN
IF a = 1 THEN PRINT "A"
IF b = 1 THEN PRINT "B"
IF c = 1 THEN PRINT "C"
IF d = 1 THEN PRINT "D"
IF e = 1 THEN PRINT "E"
END IF
END IF
END IF
END IF
END IF
NEXT e, d, c, b, a
END
解释一下我的程序:
a,b,c,d,e等于0表示这个人不参加,等于1表示参加,则五个条件可以表示成:
(1)A参加时,B也参加:要么A=0,要么A+B=2(A和B都是1)
(2)B和C只有一人参加:B+C=1(B和C中一个是1,一个是0)
(3)C和D要么都参加,要么都不参加(C+D应该是偶数,所以C和D要么都是1,要么都是0)
(4)D和E至少有一人参加(D+E应该大于等于1)
(5)如果E参加,那么A和D也都参加:要么E=0,要么E+A+D=3(E、A、D都是1)
运行结果:CD(C和D参加了)。
5 楼
强强 [专家分:4740] 发布于 2007-05-12 18:15:00
嗯,Matodied果然不错,呵呵
6 楼
moz [专家分:37620] 发布于 2007-05-12 20:41:00
s$="00000"
do
if mid$(s$,1,1)=mid$(s$,2,1)and _
mid$(s$,2,1)<>mid$(s$,3,1)and _
mid$(s$,3,1)=mid$(s$,4,1)and _
(mid$(s$,4,1)="1"or _
mid$(s$,5,1)="1")and _
(mid$(s$,5,1)="0"or _
(mid$(s$,5,1)="1"and _
mid$(s$,1,1)="1"and _
mid$(s$,4,1)="1"))then print s$
for i=len(s$)to 1 step-1
if mid$(s$,i,1)="0"then
mid$(s$,i)="10000"
exit for
end if
next
loop until s$="11111"
7 楼
美味的汽水 [专家分:70] 发布于 2007-05-13 11:02:00
这题没有问题,我做过呀
8 楼
ninke [专家分:60] 发布于 2007-05-16 18:32:00
算法:穷举法
程序模型:学生用变量a、b、c、d、e表示,变量为0表示不参加,1表示参加。
五个条件分别用表达式表示为:
if a=1 then b=1
b+c=1
c+d=2 or c+d=0
d+e>=1
if e=1 then a+b=2
程序如下:
cls
for a=0 to 1
for b=0 to 1
for c=0 to 1
for d=0 to 1
for e=0 to 1
if b+c=1 and d+e>=1 and (c+d=2 or c+d=0) and not(a=1 and b=0 ) and not(e=1 and a+b<>2) then
goto xianshi
end if
next e
next d
next c
next b
next a
xianshi:
if a=1 then print "a can jia"
if b=1 then print "b can jia"
if c=1 then print "c can jia"
if d=1 then print "d can jia"
if e=1 then print "e can jia"
end
这题关键是考你对条件和逻辑真、假的使用。
加分吧,就为了它才打半天字。
我来回复