题目描述:
1表示a、2表示b、3表示c …… 26表示z,要求输入一串数字,输出所有可能表示的字符串
样例输入:
1212
样例输出:
abab abl aub lab ll
样例输入:
1234
样例输出:
abcd awd lcd
题目分析:
如下图,利用DFS,遍历二叉树,剪枝条件:数字不能大于26
# -*- coding:utf-8 -*- class Fun: def __init__(self): self.flag=0 self.list=[]#声明一个list模仿栈 def fun(self,string): self.fun_1(string) self.fun_2(string) #回溯,出栈 if len(self.list): self.list.pop() #获取一个数字 def fun_1(self,string): #遍历完成输出 if len(string) == 0: print ''.join(self.list), return else: #输入的数要大于0 if int(string[0])>0: self.list.append(chr(int(string[0]) + 96)) return self.fun(string[1:]) else: return #获取两个数字 def fun_2(self,string): #数字长度小于2,返回 if len(string) <= 1: return else: if int(string[0:2]) > 26: return else: self.list.append(chr(int(string[0:2]) + 96)) return self.fun(string[2:]) string=raw_input() f=Fun() f.fun(string)