zoukankan      html  css  js  c++  java
  • 基本算法

    找零钱:
    def doChange(lingqian,change,ret_num,ret_coin):
        for to_change in range(change+1):
            ret_num[to_change]=to_change
    
            for i in [j for j in lingqian if j<=to_change]:
                if ret_num[to_change]>ret_num[to_change-i]+1:
                    ret_num[to_change]=ret_num[to_change-i]+1
                    ret_coin[to_change]=i
    
    def show_coin(ret_coin,change):
        while change>0:
            temp=ret_coin[change]
            print(temp)
            change=change-temp
    快速排序:
    def mypart(lst,low,hight):
        flag=lst[low]
        while low<hight:
            while low<hight and flag<=lst[hight]:
                hight =hight- 1
            lst[low]=lst[hight]
            while low<hight and flag>=lst[low]:
                low =low +1
            lst[hight]=lst[low]
        lst[low]=flag
        return low
    
    
    def mysort(lst,low,hight):
        if low<hight:
            mid=mypart(lst,low,hight)
            mysort(lst,low,mid-1)
            mysort(lst,mid+1,hight)
    
    def quicksort(lst):
        mysort(lst,0,len(lst)-1)
    
    def quick_main():
        lst=[11,2,34,52,26,66]
        quicksort(lst)
        print(lst)
    词梯:
    from enum import Enum
    class COLORS(Enum):
        white=1
        gray=2
        black=3
    
    class NODE(object):
        def __init__(self,value):
            self._value=value
            self.connections={}
            self._parent=None
            self._dis=None
            self._color=COLORS.white
    
        def addNeibor(self,item,weight=1):
            self.connections[item]=weight
    
        @property
        def value(self):
            return self._value
    
        @value.setter
        def value(self,value):
            self._value=value
        @property
        def parent(self):
            return self._parent
        @parent.setter
        def parent(self,item):
            self._parent=item
        @property
        def color(self):
             return self._color
        @color.setter
        def color(self,value):
            self._color=value
    
    
        def getNeibor(self):
            return self.connections.keys()
    
        def setParent(self,item):
            self.parent=item
    
        @property
        def dis(self):
            return self._dis
    
        @dis.setter
        def dis(self,value):
            self._dis=value
    
    
    
    class GRAPH(object):
        def __init__(self):
            self.sons={}
            self.size=0
    
        def addSon(self,value):
            self.sons[value]=NODE(value)
            self.size +=1
    
        def getSon(self,value):
            return self.sons.get(value,None)
    
        def addEdge(self,value1,value2,weight=1):
            if value1 not in self.sons:
                self.addSon(value1)
            if value2 not in self.sons:
                self.addSon(value2)
            self.sons[value1].addNeibor(self.sons[value2],weight)
    
    def genCiTi(datas):
        bkt={}
        g=GRAPH()
        for data in datas:
            for i in range(len(data)):
                flag=data[:i]+'_'+data[i+1:]
                bkt.setdefault(flag,[]).append(data)
        for _,data in bkt.items():
            for word1 in data:
                for word2 in data:
                    if word1 != word2:
                        g.addEdge(word1,word2,1)
        return g
    
    def minPaht(g,start):
        path=[]
        first=g.getSon(start)
        first.dis=0
        first.parent=None
        path.append(first)
        while len(path)>0:
            current=path.pop(0)
            for son in current.getNeibor():
                if son.color == COLORS.white:
                    newdis=current.dis+1
                    son.dis=newdis
                    son.parent=current
                    son.color=COLORS.gray
                    path.append(son)
            current.color=COLORS.black
    
    def showPah(g,dest):
        item=g.getSon(dest)
        print(item.value)
        while item.parent:
            item=item.parent
            print(item.value)
    
    def mainCiTi():
        datas=['fool', 'foul', 'foil', 'fail', 'poll', 'pall', 'pole', 'fall', 'page', 'sage', 'sale', 'pale', 'pope', 'cool', 'pool']
        g=genCiTi(datas)
        minPaht(g,"fool")
        showPah(g,'sage')
    
    mainCiTi()
  • 相关阅读:
    低版本ie模式 360兼容模式的兼容性调节以及控制代码
    360浏览器兼容模式样式乱码的原因及解决办法
    iOS开发之UILabel
    代码大全--第六章--可以工作的类
    读书笔记--软件项目成功之道
    extern "C"的用法解析(转)
    基于Ubuntu 15.04 LTS编译Android5.1.0源代码 (转)
    Global.asax 文件是什么(转)
    设备扩展(DEVICE_EXTENSION)
    IRP_MJ_CREATE
  • 原文地址:https://www.cnblogs.com/testzcy/p/12366182.html
Copyright © 2011-2022 走看看