回 帖 发 新 帖 刷新版面

主题:编程

三人对比赛名次进行预测:
 甲说:A得第一,B得第三
 乙说:C得第一,D得第四
 丙说:D的第一,B得第三
每人说对了一半,请你排出A,B,C,D的名次

回复列表 (共14个回复)

沙发

CDBA

板凳

Dim jyb$(3)
jyb$(1) = "A B "
jyb$(2) = "C  D"
jyb$(3) = "D B "
k$ = "ABCD"
Do
     For i = 1 To 3
         p = 0
         For j = 1 To 4
             If Mid$(k$, j, 1) = Mid$(jyb$(i), j, 1) Then p = p + 1
         Next
         If p <> 1 Then Exit For
     Next
     If i > 3 Then Print k$
     k$ = nextpl$(k$)
Loop Until k$ = "ABCD"
End 

Function nextpl$(a$)
l = Len(a$)
For e = (l - 1) To 1 Step -1
  If Mid$(a$, e, 1) < Mid$(a$, e + 1, 1) Then Exit For
Next
If e > 0 Then
  For i = l To (e + 1) Step -1
    If Mid$(a$, i, 1) > Mid$(a$, e, 1) Then Exit For
  Next
  b$ = Mid$(a$, i, 1)
  Mid$(a$, i, 1) = Mid$(a$, e, 1)
  Mid$(a$, e, 1) = b$
End If
For i = (e + 1) To (l + e + 1) \ 2
    j = l + e + 1 - i
    b$ = Mid$(a$, i, 1)
    Mid$(a$, i, 1) = Mid$(a$, j, 1)
    Mid$(a$, j, 1) = b$
Next
nextpl$ = a$
End Function

3 楼


2楼的程序太复杂
这一题可用穷举法

4 楼

嗯,你穷给我看看。

5 楼


program ABCD;
 var A,B,C,D:integer;
 begin
 for A:=1 to 4 do
  for B:=1 to 4 do
   if (A<>B) then
    for C:=1 to 4 do
     if (C<>B) and (B<>A) then
     begin
       D:=10-A-B-C;
       if ((ord(A=1)+ord(B=3)=1) and (ord(C=1)+ord(D=4)=1) and (ord(D=1)+ord(B=3)=1)) then
         write(A,B,C,D)
     end;
 end.

6 楼


偶是一个小学生

7 楼

嗯,是你厉害,我连小学生都不如,我现在就去找一块豆腐.

8 楼

我是刚开始学,还有很多题目不会做.希望各位老师能帮我解答

9 楼

记住,不要轻易放弃自己的想法,写出来给他看看。

10 楼

CLS
FOR A = 1 TO 4
  FOR B = 1 TO 4
    FOR C = 1 TO 4
      FOR D = 1 TO 4
        IF A * B * C * D = 24 AND A + B + C + D = 10 THEN
        IF (A = 1) + (B = 3) = -1 THEN
        IF (C = 1) + (D = 4) = -1 THEN
        IF (D = 1) + (B = 3) = -1 THEN
        PRINT A; B; C; D
        END IF
        END IF
        END IF
        END IF
      NEXT D
    NEXT C
  NEXT B
NEXT A
END

我来回复

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