网上看见的,下面是代码(写的很烂)
# -*- coding:utf-8 -*- import sys sys.setrecursionlimit(1000000) let=['A','B','C','D'] #题目选项 n3=[2,5,1,3] n4=[[0,4],[1,6],[0,8],[5,9]] n5=[7,3,8,6] n6=[[1,3],[0,5],[2,9],[4,8]] n7=['C','B','A','D'] n8=[6,4,1,9] n9=[5,9,1,8] n10=[3,2,4,1] s=[] def dfs (index=0):#深度优先遍历 global s if index==10: juduge(s) return for i in range(4): s.append(chr(ord('A')+i)) dfs(index+1) s.pop(-1) def juduge(s): n=[s.count('A'),s.count('B'),s.count('C'),s.count('D')] if ord(s[4])-ord(s[1])!=2 and ord(s[4])-ord(s[1])!=-2:#第二题 return n33=n3[:] n33.remove(n3[ord(s[2])-ord('A')])#第三题 if s[n3[ord(s[2])-ord('A')]] == s[n33[0]] or s[n3[ord(s[2])-ord('A')]] == s[n33[1]] or s[n3[ord(s[2])-ord('A')]] == s[n33[2]]: return if s[n4[ord(s[3])-ord('A')][0]] != s[n4[ord(s[3])-ord('A')][1]]:#第四题 return if s[n5[ord(s[4])-ord('A')]] != s[4]:#第五题 return if s[n6[ord(s[5])-ord('A')][0]]!=s[n6[ord(s[5])-ord('A')][1]]:#第六题 return elif s[n6[ord(s[5])-ord('A')][0]]!=s[7]: return if n.count(min(n))==1:#第七题 if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))]: return elif n.count(min(n))==2: if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n)))]: return elif n.count(min(n))==3: if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n)))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n),n.index(min(n))))]: return n91=[s[0]==s[5],s[n9[ord(s[8])-ord('A')]] == s[4]]#第九题 if not(n91[0]^n91[1]): return if ord(s[n8[ord(s[7])-ord('A')]])-ord(s[0])==1 or ord(s[n8[ord(s[7])-ord('A')]])-ord(s[0])==-1:#第八题 return if n10[ord(s[9])-ord('A')]!=(max(n)-min(n)):#第十题 return print s ''' s='' for a in range(4): for b in range(4): for c in range(4): for d in range(4): for e in range(4): for f in range(4): for g in range(4): for h in range(4): for i in range(4): for j in range(4): s+=chr(ord('A')+a) s+=chr(ord('A')+b) s+=chr(ord('A')+c) s+=chr(ord('A')+d) s+=chr(ord('A')+e) s+=chr(ord('A')+f) s+=chr(ord('A')+g) s+=chr(ord('A')+h) s+=chr(ord('A')+i) s+=chr(ord('A')+j) juduge(s) s='''''#循环穷举 dfs(0) print 'finish'