回 帖 发 新 帖 刷新版面

主题:请教

2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
              人参加了竞赛:

               (1)A参加时,B也参加;

               (2)B和C只有一个人参加;

               (3)C和D或者都参加,或者都不参加;

               (4)D和E中至少有一个人参加;

               (5)如果E参加,那么A和D也都参加。

回复列表 (共8个回复)

沙发


(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只有一个人参加,这不是相矛盾了吗??

板凳

楼上,根据我的推断,这题没有问题,所以,应该说,你假设的这种不成立。
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 楼

结果是: 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 楼

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 楼

嗯,Matodied果然不错,呵呵

6 楼

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 楼

这题没有问题,我做过呀

8 楼

算法:穷举法
程序模型:学生用变量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

这题关键是考你对条件和逻辑真、假的使用。

加分吧,就为了它才打半天字。
  
  
              

我来回复

您尚未登录,请登录后再回复。点此登录或注册