Python ab

Run Settings
LanguagePython
Language Version
Run Command
import time op = ['+', '-', '&'] # 操作符 &表示两个数合并 vis = [0 for i in range(20)] # vis表示是否访问过 # range(输入的数值的最多位数) """ dfs搜索出所有排列结果保存到slist :param a list 表示输入的数组 w int 计数,递归级数 slist list 保存输出结果 link list 保存路径,二维数组,因为存的是路径所有对于每次递归只取link[n-1] """ def wayback(a: list, w: int, evdic: dict,link: any): if w == len(a): s = '' for n in link: if len(n) == 0: break s = s + str(n[len(n) - 1][0]) + n[len(n) - 1][1] # 取每个路径最后一组结果 s = s + str(a[w - 1]) # 默认只做到len-2 这里需要加上最后一个数字 s = s.replace('0&', '').replace('&', '') evdic.setdefault(eval(s), []) evdic[eval(s)].append(s) # 添加表达式到结果列表 return for i in range(w): if vis[i] == 0: for j in op: vis[i] = 1 # 标记 link[i].append([a[i], j]) #dic.setdefault(a[i], []) #dic[a[i]].append(j) wayback(a, w + 1, evdic, link) # 递归 vis[i] = 0 # 恢复 """ 处理输入,调用递归函数得到结果数组,筛选符合的表达式,输出 """ def compute(a, b): # 输入的两个字符串的数值拆分成整型数组 a = ','.join(a).split(',') b = ','.join(b).split(',') aDict, bDict = {}, {} # 调用递归函数并保存结果 wayback(a, 1, aDict, [[] for i in range(20)]) wayback(b, 1, bDict, [[] for i in range(20)]) # print(aSet) #aSet=set(aDict.keys()) #bSet=set(bDict.keys()) #aSet = aSet & bSet # print(aSet) for key in aDict.keys()&bDict.keys(): print(aDict[key], "=", bDict[key], "=", key) a = input('input A:') b = input('input B:') start = time.time() compute(a, b) end = time.time() print('计时:', end-start) """测试 12345 6789 """ """dfs 123 1 2 3 1 1+2 1+2+3 1+2-3 1+2&3 1-2 1-2+3 1-2-3 1-2&3 1&2 ... """
Editor Settings
Theme
Key bindings
Full width
Lines