用ASP写了一个算法 也不知道对不对 你可以验证一下: <% group=array("","A","B","C","D","E","F") guojia=array("","美国","德国","英国","法国","俄罗斯","意大利") Dim a(7,7) for i=0 to 6 for j=0 to 6 if i=0 then a(0,j)=1 else a(i,j)=j end if next next a(1,1)=0'不是美国 a(1,2)=0'不是德国 a(1,4)=0'不是法国 a(1,5)=0'不是俄罗斯 a(2,1)=0'不是美国 a(2,2)=0'不是德国 a(2,4)=0'不是法国 a(3,1)=0'不是美国 a(3,2)=0'不是德国 a(3,4)=0'不是法国 a(3,5)=0'不是俄罗斯 a(3,6)=0'不是意大利 a(5,5)=0'不是俄罗斯 a(6,2)=0'不是德国 do while a(0,1)+a(0,2)+a(0,3)+a(0,4)+a(0,5)+a(0,6)>0 for i=0 to 6 if a(0,i)=1 then z=0 for j=0 to 6 if a(i,j)<>0 then x=j y=i z=z+1 end if next if z=1 then for t=1 to 6 if t<>i then a(x,t)=0 a(0,y)=0 end if next end if end if next loop for i=0 to 6 for j=0 to 6 if a(i,j)<>0 then response.Write group(i,0)&"是"&guojia(a(i,j))&"人" response.Write "<br>" end if next next %>
这样形成一个矩阵
a(1,1)=0'不是美国
a(1,2)=0'不是德国
a(1,4)=0'不是法国
a(1,5)=0'不是俄罗斯
a(2,1)=0'不是美国
a(2,2)=0'不是德国
a(2,4)=0'不是法国
a(3,1)=0'不是美国
a(3,2)=0'不是德国
a(3,4)=0'不是法国
a(3,5)=0'不是俄罗斯
a(3,6)=0'不是意大利
a(5,5)=0'不是俄罗斯
a(6,2)=0'不是德国从这个条件可以得出C是是英国人
A不等于法国人
A不等于英国人不等于C
A不等于俄罗斯人
A不等于德国人
A为意大利人
也不知道对不对
你可以验证一下:
<%
group=array("","A","B","C","D","E","F")
guojia=array("","美国","德国","英国","法国","俄罗斯","意大利")
Dim a(7,7)
for i=0 to 6
for j=0 to 6
if i=0 then
a(0,j)=1
else
a(i,j)=j
end if
next
next
a(1,1)=0'不是美国
a(1,2)=0'不是德国
a(1,4)=0'不是法国
a(1,5)=0'不是俄罗斯
a(2,1)=0'不是美国
a(2,2)=0'不是德国
a(2,4)=0'不是法国
a(3,1)=0'不是美国
a(3,2)=0'不是德国
a(3,4)=0'不是法国
a(3,5)=0'不是俄罗斯
a(3,6)=0'不是意大利
a(5,5)=0'不是俄罗斯
a(6,2)=0'不是德国
do while a(0,1)+a(0,2)+a(0,3)+a(0,4)+a(0,5)+a(0,6)>0
for i=0 to 6
if a(0,i)=1 then
z=0
for j=0 to 6
if a(i,j)<>0 then
x=j
y=i
z=z+1
end if
next
if z=1 then
for t=1 to 6
if t<>i then
a(x,t)=0
a(0,y)=0
end if
next
end if
end if
next
loop
for i=0 to 6
for j=0 to 6
if a(i,j)<>0 then
response.Write group(i,0)&"是"&guojia(a(i,j))&"人"
response.Write "<br>"
end if
next
next
%>
a(1,2)=0'A不是德国
a(1,4)=0'A不是法国
a(1,5)=0'A不是俄罗斯
a(2,1)=0'B不是美国
a(2,2)=0'B不是德国
a(2,4)=0'B不是法国
a(3,1)=0'C不是美国
a(3,2)=0'C不是德国
a(3,4)=0'C不是法国
a(3,5)=0'C不是俄罗斯
a(3,6)=0'C不是意大利
a(5,5)=0'E不是俄罗斯
a(6,2)=0'F不是德国