zoukankan      html  css  js  c++  java
  • 小米春招编程题(第3题)

    题目描述:

    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)
  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/8805745.html
Copyright © 2011-2022 走看看