楼猪用了30分钟推理,有点晕 1、第一个答案是b的问题是哪一个?
(a)2;(b) 3;(c)4;(d)5;(e)6 2、唯一的连续两个具有相同答案的问题是:
(a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7; 3、本问题答案和哪一个问题的答案相同?
(a)1;(b)2;(c)4;(d)7;(e)6 4、答案是a的问题的个数是:
(a)0;(b)1;(c)2;(d)3;(e)4 5、本问题答案和哪一个问题的答案相同?
(a)10;(b)9;(c)8;(d)7;(e)6 6、答案是a的问题的个数和答案是什么的问题的个数相同?
(a)b;(b)c;(c)d;(d)e;(e)以上都不是 7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母) 8、答案是元音字母的问题的个数是:
(a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母) 9、答案是辅音字母的问题的个数是:
(a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数 10、本问题的答案是:
(a)a;(b)b;(c)c;(d)d;(e)e
(a)2;(b) 3;(c)4;(d)5;(e)6 2、唯一的连续两个具有相同答案的问题是:
(a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7; 3、本问题答案和哪一个问题的答案相同?
(a)1;(b)2;(c)4;(d)7;(e)6 4、答案是a的问题的个数是:
(a)0;(b)1;(c)2;(d)3;(e)4 5、本问题答案和哪一个问题的答案相同?
(a)10;(b)9;(c)8;(d)7;(e)6 6、答案是a的问题的个数和答案是什么的问题的个数相同?
(a)b;(b)c;(c)d;(d)e;(e)以上都不是 7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母) 8、答案是元音字母的问题的个数是:
(a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母) 9、答案是辅音字母的问题的个数是:
(a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数 10、本问题的答案是:
(a)a;(b)b;(c)c;(d)d;(e)e
t = Timer '记录开始时间
Dim a1%, a2%, a3%, a4%, a5%, a6%, a7%, a8%, a9%, a10%
Dim cc%, i%, t1%, t2%, tc%, t3%, t4%, t5%, t6%, t7% '定义循环变量
Dim arr(1 To 10) As Integer '定义答案数组a=1,b=2,c=3,d=4,e=5
Dim answer() As String
cc = 0
For a1 = 1 To 5 '第1题,不为2
If a1 = 2 Then GoTo line1
arr(1) = a1
For a2 = 2 To 5 '第2题,不为1
arr(2) = a2
For a3 = 1 To 5 '第3题,不为2
If a3 = 2 Then GoTo line2
arr(3) = a3
For a4 = 2 To 5 '第4题,不为1
arr(4) = a4
For a5 = 1 To 5 '第5题
arr(5) = a5
For a6 = 1 To 5 '第6题
arr(6) = a6
For a7 = 1 To 4 '第7题,不为5
arr(7) = a7
For a8 = 1 To 3 '第8题,不为4,5
arr(8) = a8
For a9 = 1 To 4 '第9题
If a9 = 3 Then GoTo line3 '不为3,5
arr(9) = a9
For a10 = 1 To 5
arr(10) = a10
If arr(arr(1) + 1) <> 2 Then GoTo xxx '题1条件
If arr(arr(2) + 1) <> arr(arr(2) + 2) Then GoTo xxx '题2条件
Select Case arr(3)
Case 1
t1 = 1
Case 3
t1 = 4
Case 4
t1 = 7
Case 5
t1 = 6
End Select
If arr(3) <> arr(t1) Then GoTo xxx '题3条件1
t2 = 0
If arr(3) = arr(1) Then t2 = t2 + 1
If arr(3) = arr(4) Then t2 = t2 + 1
If arr(3) = arr(7) Then t2 = t2 + 1
If arr(3) = arr(6) Then t2 = t2 + 1
If t2 > 1 Then GoTo xxx '题3条件2,需满足唯一性
t3 = 0
For i = 1 To 10
If arr(i) = 1 Then t3 = t3 + 1
Next i
If arr(4) - 1 <> t3 Then GoTo xxx '题4条件
If arr(5) <> arr(11 - arr(5)) Then GoTo xxx '题5条件1
tc = 0
For i = 6 To 10
If arr(5) = arr(i) Then tc = tc + 1
Next i
If tc > 1 Then GoTo xxx '题5条件2,需满足唯一性
t4 = 0: t5 = 0
For i = 1 To 10
If arr(i) = 1 Then t4 = t4 + 1
If arr(i) = arr(6) + 1 Then t5 = t5 + 1
Next i
If arr(6) < 5 And t4 = t5 Then GoTo linea '题6条件
If arr(6) = 5 And t4 = 1 Then GoTo linea '题6条件,注意选5时需考虑1,2,3,4均不满足
If arr(6) = 5 And t4 > 5 Then GoTo linea '题6条件,注意选5时需考虑1,2,3,4均不满足
GoTo xxx
linea:
If Abs(arr(7) - arr(8)) <> 5 - arr(7) Then GoTo xxx '题7条件
t6 = 0
For i = 1 To 10
If arr(i) = 5 Then t6 = t6 + 1
Next i
If t4 + t6 <> arr(8) + 1 Then GoTo xxx '题8条件,简化了题目,排除不可能项
Select Case arr(9)
Case 1
t7 = 7
Case 2
t7 = 6
Case 4
t7 = 8
End Select
If 9 - arr(8) <> t7 Then GoTo xxx '题9条件
cc = cc + 1
ReDim Preserve answer(cc)
answer(cc) = Chr(arr(1) + 64)
For i = 2 To 10
answer(cc) = answer(cc) & "," & Chr(arr(i) + 64)
Next i
xxx:
Next a10
line3:
Next a9
Next a8
Next a7
Next a6
Next a5
Next a4
line2:
Next a3
Next a2
line1:
Next a1
answer(0) = "搜索完毕,共找到" & cc & "组解,用时" & Timer - t & "秒"
MsgBox Join(answer, vbCrLf)
End Sub
-------------------返回:
搜索完毕,共找到1组解,用时0.34375秒
C,D,E,B,E,E,D,C,B,A