#encoding:utf-8 #a--1 b---2 26--z #给定已有的数字密码,求所有可能的原来的字母 final=[] def translate(arr,begin,end): i=begin if begin>end: result='' for j in arr: if j!='#': result+=j final.append(result) else: if not(i<end and arr[i+1]=='0'): arr[i] = chr(ord(arr[i]) + 48) translate(arr,begin+1,end) arr[i]=chr(ord(arr[i])-48) if i<end: num=arr[i]+arr[i+1] num=int(num) if num<=26 and (not(i+2<=end and arr[i+2]=='0')): x,y=arr[i],arr[i+1] arr[i]=chr(96+num) arr[i+1]='#' translate(arr,begin+2,end) arr[i],arr[i+1]=x,y while 1: arr=raw_input() if arr=='': break arr=list(arr) translate(arr,0,len(arr)-1) for n in range(len(final)-1): print final[n], print final[-1] final=[]
123
abc aw lc