zoukankan      html  css  js  c++  java
  • 栈的应用实例

    一:三级菜单的文艺青年版

    dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"], }, "河南": { "郑州": ["1", "2", "3"], "平顶山": ["4", "5", "6"] }, "山西": { "A": ["11", "22", "33"], "C": ["44", "55", "66"] } } layer_list=[] current=dic while True: for i in current: print(i) choice=input('==>') if choice in current: layer_list.append(current) current=current[choice] elif choice=='q': current=layer_list[-1] layer_list.pop() else: print('错误!请重新输入!')

    二.

    fields_list=fields.split('|')
    d={}
    l=[0]
    while data:
        for key in data:
            if key in fields_list:
                d[key]=data[key]
            if type(data[key])==dict:
                l.append(data[key])
        data=l.pop()
    print(d)
    

      

      递归的解法:

    l='fld2|fld3|fld7|fld19'.split('|')
    result={}
    def foo(dic,lst):
        for i in dic :
            if i in lst:
                result[i]=dic[i]
            if type(dic[i])==dict:
                foo(dic[i],lst)
    foo(data,l)
    print(result)

      如此简单!

    单论这两个例子,采用栈的方法,有一些共同点:

      1 题目特点

        情况能无线套下去。无穷无尽

      2 解题思路

        1 有一个空列表,存储数据。

        2 一定有一个不变的变量名,每循环一次,变量名内的数据就会变动,往空列表中追加。

        3 这个变量名可能开始就要赋值,直接用最初的字典赋值,拿来用。目前这两个题是这样的,而且都是字典。

        4 一定有列表的pop代码。

  • 相关阅读:
    redis 笔记04 服务器、复制
    redis 笔记03 RDB 持久化、AOF持久化、事件、客户端
    redis 笔记02 对象、数据库
    反射复习笔记02
    攻防世界 — Web进阶题(第11
    机器学习-极大似然和对数几率回归(浅入)
    redis的过期策略和内存淘汰
    Backbone.Router实践
    Spring Boot 数据访问
    Archives: 2018/12
  • 原文地址:https://www.cnblogs.com/654321cc/p/7400846.html
Copyright © 2011-2022 走看看