霍夫曼编码(贪心算法)

 

题目:

思路:统计歌词中字出现的频率->频率高的放在离根近的地方

字数统计程序:

#制备每个字符的概率表
def findTheCharFrequency(text):
    result = dict()
    with open(text,'r',encoding='UTF-8') as f:
        for line in f.readlines():
            line = line.strip()#lower()转换字符串中所有大写字符为小写
            for i in line:
                if i in result:
                    result[i] += 1
                else:
                    result.update({i:1})
    return result

字数统计结果:

[('你', 43), ('我', 37), ('的', 26), ('\u3000', 23), ('爱', 21), ('为', 21), ('亲', 16), ('流', 12), ('中', 12), ('自', 11), ('泪', 11), ('国', 11), ('母', 11), ('豪', 11), ('也', 11), ('就', 10), ('会', 9), ('心', 8), ('像', 8), ('有', 6), ('时', 6), ('无', 5), ('想', 5), ('在', 5), ('一', 5), ('何', 5), ('紧', 4), ('感', 4), ('到', 4), ('子', 4), ('可', 4), ('上', 4), ('希', 3), ('慢', 3), ('天', 3), ('只', 3), ('都', 3), ('当', 3), ('失', 3), ('渐', 3), ('生', 3), ('是', 3), ('人', 3), ('总', 3), ('老', 3), ('些', 3), ('论', 3), ('地', 3), ('歌', 3), ('命', 3), ('着', 3), ('望', 3), ('要', 3), ('每', 3), ('遍', 3), (' ', 2), ('山', 2), ('意', 2), ('能', 2), ('坡', 2), ('消', 2), ('拾', 2), ('样', 2), ('对', 2), ('孤', 2), ('它', 2), ('阳', 2), ('候', 2), ('给', 2), ('这', 2), ('助', 2), ('重', 2), ('魂', 2), ('直', 2), ('起', 2), ('膀', 2), ('记', 2), ('让', 2), ('b', 2), ('温', 2), ('还', 2), ('独', 2), ('树', 2), ('破', 2), ('某', 2), ('恐', 2), ('i', 2), ('唱', 2), ('种', 2), ('惑', 2), ('再', 2), ('够', 2), ('滚', 2), ('肩', 2), ('暖', 2), ('离', 2), ('石', 2), ('住', 2), ('方', 2), ('存', 2), ('向', 2), ('痛', 2), ('义', 2), ('摸', 2), ('幺', 2), ('同', 2), ('触', 2), ('念', 2), ('手', 2), ('比', 2), ('浪', 2), ('知', 2), ('名', 2), ('信', 2), ('情', 2), ('a', 2), ('灵', 2), ('燕', 2), ('却', 2), ('变', 2), ('首', 2), ('芽', 2), ('字', 2), ('伦', 2), ('太', 2), ('疼', 2), ('迷', 2), ('落', 2), ('那', 2), ('惧', 2), ('孩', 2), ('个', 2), ('不', 2), ('群', 2), ('碎', 2), ('把', 2), ('道', 2), ('臂', 2), ('与', 2), ('\xa0', 2), ('枝', 2), ('去', 2), ('做', 2), ('但', 2), ('抱', 2), ('如', 2), ('搂', 2)]

 创建哈夫曼树:

#创建节点类
class Node(object):
    def __init__(self, name=None, value=None):
        self.name = name
        self.value = value
        self.lchild = None
        self.rchild = None

#创建Huffman树
class HuffmanTree(object):
    #根据Huffman树的思想:以节点为基础,反向建立Huffman树
    def __init__(self, char_Weights):
        self.Leaf = [Node(k,v) for k, v in char_Weights.items()]
        while len(self.Leaf) != 1:
            self.Leaf.sort(key=lambda node:node.value, reverse=True)
            n = Node(value=(self.Leaf[-1].value + self.Leaf[-2].value))
            n.lchild = self.Leaf.pop(-1)
            n.rchild = self.Leaf.pop(-1)
            self.Leaf.append(n)
        self.root = self.Leaf[0]
        self.Buffer = list(range(10))

    #用递归地思想生成编码
    def Hu_generate(self, tree, length):
        node = tree
        if (not node):
            return
        elif node.name:
            print(node.name + ' 的Huffman编码为: ', end='')
            for i in range(length):
                print(self.Buffer[i], end='')
            print('\n')
            return
        self.Buffer[length] = 0
        self.Hu_generate(node.lchild, length + 1)
        self.Buffer[length] = 1
        self.Hu_generate(node.rchild, length + 1)

    #输出哈夫曼编码
    def get_code(self):
        self.Hu_generate(self.root, 0)

if __name__=='__main__':
    text = r'text.txt'
    result = findTheCharFrequency(text)
    #print(result)
    tree = HuffmanTree(result)
    tree.get_code()
你的Huffman编码为: 000时的Huffman编码为: 001000感的Huffman编码为: 0010010子的Huffman编码为: 0010011流的Huffman编码为: 00101 的Huffman编码为: 0011中的Huffman编码为: 01000紧的Huffman编码为: 0100100可的Huffman编码为: 0100101臂的Huffman编码为: 01001100树的Huffman编码为: 010011010抱的Huffman编码为: 010011011到的Huffman编码为: 0100111的的Huffman编码为: 0101上的Huffman编码为: 0110000每的Huffman编码为: 01100010当的Huffman编码为: 01100011心的Huffman编码为: 011001像的Huffman编码为: 011010无的Huffman编码为: 0110110想的Huffman编码为: 0110111亲的Huffman编码为: 01110望的Huffman编码为: 01111000只的Huffman编码为: 01111001慢的Huffman编码为: 01111010希的Huffman编码为: 01111011会的Huffman编码为: 011111向的Huffman编码为: 100000000样的Huffman编码为: 100000001浪的Huffman编码为: 100000010种的Huffman编码为: 100000011惧的Huffman编码为: 100000100个的Huffman编码为: 100000101这的Huffman编码为: 100000110首的Huffman编码为: 100000111对的Huffman编码为: 100001000不的Huffman编码为: 100001001要的Huffman编码为: 10000101坡的Huffman编码为: 100001100恐的Huffman编码为: 100001101 的Huffman编码为: 100001110离的Huffman编码为: 100001111直的Huffman编码为: 100010000还的Huffman编码为: 100010001孩的Huffman编码为: 100010010道的Huffman编码为: 100010011变的Huffman编码为: 100010100消的Huffman编码为: 100010101那的Huffman编码为: 100010110把的Huffman编码为: 100010111让的Huffman编码为: 100011000某的Huffman编码为: 100011001能的Huffman编码为: 100011010情的Huffman编码为: 100011011够的Huffman编码为: 100011100魂的Huffman编码为: 100011101名的Huffman编码为: 100011110疼的Huffman编码为: 100011111论的Huffman编码为: 10010000总的Huffman编码为: 10010001地的Huffman编码为: 10010010失的Huffman编码为: 10010011人的Huffman编码为: 10010100歌的Huffman编码为: 10010101是的Huffman编码为: 10010110些的Huffman编码为: 10010111命的Huffman编码为: 10011000老的Huffman编码为: 10011001着的Huffman编码为: 10011010遍的Huffman编码为: 10011011都的Huffman编码为: 10011100渐的Huffman编码为: 10011101天的Huffman编码为: 10011110生的Huffman编码为: 10011111信的Huffman编码为: 101000000重的Huffman编码为: 101000001孤的Huffman编码为: 101000010伦的Huffman编码为: 101000011意的Huffman编码为: 101000100阳的Huffman编码为: 101000101膀的Huffman编码为: 101000110群的Huffman编码为: 101000111幺的Huffman编码为: 101001000摸的Huffman编码为: 101001001字的Huffman编码为: 101001010义的Huffman编码为: 101001011暖的Huffman编码为: 101001100破的Huffman编码为: 101001101枝的Huffman编码为: 101001110存的Huffman编码为: 101001111一的Huffman编码为: 1010100何的Huffman编码为: 1010101痛的Huffman编码为: 101011000比的Huffman编码为: 101011001但的Huffman编码为: 101011010记的Huffman编码为: 101011011滚的Huffman编码为: 101011100它的Huffman编码为: 101011101做的Huffman编码为: 101011110肩的Huffman编码为: 101011111拾的Huffman编码为: 101100000温的Huffman编码为: 101100001却的Huffman编码为: 101100010石的Huffman编码为: 101100011起的Huffman编码为: 101100100方的Huffman编码为: 101100101太的Huffman编码为: 101100110住的Huffman编码为: 101100111芽的Huffman编码为: 101101000 的Huffman编码为: 101101001触的Huffman编码为: 101101010与的Huffman编码为: 101101011迷的Huffman编码为: 101101100助的Huffman编码为: 101101101唱的Huffman编码为: 101101110念的Huffman编码为: 101101111灵的Huffman编码为: 101110000再的Huffman编码为: 101110001去的Huffman编码为: 101110010知的Huffman编码为: 101110011给的Huffman编码为: 101110100山的Huffman编码为: 101110101同的Huffman编码为: 101110110落的Huffman编码为: 101110111惑的Huffman编码为: 101111000燕的Huffman编码为: 101111001碎的Huffman编码为: 101111010独的Huffman编码为: 101111011手的Huffman编码为: 101111100搂的Huffman编码为: 101111101如的Huffman编码为: 101111110候的Huffman编码为: 101111111我的Huffman编码为: 1100在的Huffman编码为: 1101000有的Huffman编码为: 1101001就的Huffman编码为: 110101也的Huffman编码为: 110110母的Huffman编码为: 110111爱的Huffman编码为: 11100为的Huffman编码为: 11101国的Huffman编码为: 111100自的Huffman编码为: 111101豪的Huffman编码为: 111110泪的Huffman编码为: 111111

输出整首歌的编码:

my_dict = {}#编码存放的地点
#制备每个字符的概率表
def findTheCharFrequency(text):
    result = dict()
    with open(text,'r',encoding='UTF-8') as f:
        for line in f.readlines():
            line = line.strip()
            for i in line:
                if i in result:
                    result[i] += 1
                else:
                    result.update({i:1})
    return result

#创建节点类
class Node(object):
    def __init__(self, name=None, value=None):
        self.name = name
        self.value = value
        self.lchild = None
        self.rchild = None

#创建Huffman树
class HuffmanTree(object):
    #根据Huffman树的思想:以节点为基础,反向建立Huffman树
    def __init__(self, char_Weights):
        self.Leaf = [Node(k,v) for k, v in char_Weights.items()]#char_Weights.items()返回可遍历的(键, 值) 元组数组
        while len(self.Leaf) != 1:
            self.Leaf.sort(key=lambda node:node.value, reverse=True)#计算各个数的个数(value)
            n = Node(value=(self.Leaf[-1].value + self.Leaf[-2].value))
            n.lchild = self.Leaf.pop(-1)
            n.rchild = self.Leaf.pop(-1)
            self.Leaf.append(n)
            # key不存在
        self.root = self.Leaf[0]#字
        self.Buffer = list(range(10))#编码


    #用递归地思想生成编码
    def Hu_generate(self, tree, length):
        node = tree
        if (not node):
            return
        elif node.name:
            print(node.name + '的Huffman编码为: ',end='')
            for i in range(length):
                print(self.Buffer[i], end='')
                my_dict[str(node.name)] = str(self.Buffer)
            return
        self.Buffer[length] = 0
        self.Hu_generate(node.lchild, length + 1)
        self.Buffer[length] = 1
        self.Hu_generate(node.rchild, length + 1)

    #输出哈夫曼编码
    def get_code(self):
        self.Hu_generate(self.root, 0)

if __name__=='__main__':
    text = r'text.txt'
    result = findTheCharFrequency(text)
    #print(result)
    tree = HuffmanTree(result)
    tree.get_code()
    with open(text,'r',encoding='UTF-8') as f:
        for line in f.readlines():
            for j in line:
                print(my_dict.setdefault(str(j),0))#dict.setdefault(key,[这里设置如果不存在想将值设置为啥,默认为None])

实验结果:

你的Huffman编码为: 000有的Huffman编码为: 001000紧的Huffman编码为: 0010010到的Huffman编码为: 0010011中的Huffman编码为: 00101 的Huffman编码为: 0011流的Huffman编码为: 01000上的Huffman编码为: 0100100可的Huffman编码为: 0100101消的Huffman编码为: 01001100够的Huffman编码为: 010011010膀的Huffman编码为: 010011011感的Huffman编码为: 0100111的的Huffman编码为: 0101子的Huffman编码为: 0110000慢的Huffman编码为: 01100010老的Huffman编码为: 01100011心的Huffman编码为: 011001像的Huffman编码为: 011010在的Huffman编码为: 0110110想的Huffman编码为: 0110111亲的Huffman编码为: 01110当的Huffman编码为: 01111000渐的Huffman编码为: 01111001望的Huffman编码为: 01111010是的Huffman编码为: 01111011会的Huffman编码为: 011111迷的Huffman编码为: 100000000碎的Huffman编码为: 100000001滚的Huffman编码为: 100000010落的Huffman编码为: 100000011存的Huffman编码为: 100000100同的Huffman编码为: 100000101摸的Huffman编码为: 100000110惑的Huffman编码为: 100000111坡的Huffman编码为: 100001000种的Huffman编码为: 100001001歌的Huffman编码为: 10000101臂的Huffman编码为: 100001100太的Huffman编码为: 100001101念的Huffman编码为: 100001110知的Huffman编码为: 100001111 的Huffman编码为: 100010000这的Huffman编码为: 100010001那的Huffman编码为: 100010010助的Huffman编码为: 100010011石的Huffman编码为: 100010100阳的Huffman编码为: 100010101但的Huffman编码为: 100010110某的Huffman编码为: 100010111意的Huffman编码为: 100011000温的Huffman编码为: 100011001树的Huffman编码为: 100011010 的Huffman编码为: 100011011起的Huffman编码为: 100011100给的Huffman编码为: 100011101如的Huffman编码为: 100011110灵的Huffman编码为: 100011111命的Huffman编码为: 10010000人的Huffman编码为: 10010001希的Huffman编码为: 10010010失的Huffman编码为: 10010011都的Huffman编码为: 10010100只的Huffman编码为: 10010101遍的Huffman编码为: 10010110天的Huffman编码为: 10010111要的Huffman编码为: 10011000地的Huffman编码为: 10011001些的Huffman编码为: 10011010论的Huffman编码为: 10011011生的Huffman编码为: 10011100总的Huffman编码为: 10011101每的Huffman编码为: 10011110着的Huffman编码为: 10011111信的Huffman编码为: 101000000义的Huffman编码为: 101000001破的Huffman编码为: 101000010枝的Huffman编码为: 101000011拾的Huffman编码为: 101000100名的Huffman编码为: 101000101向的Huffman编码为: 101000110还的Huffman编码为: 101000111幺的Huffman编码为: 101001000孩的Huffman编码为: 101001001魂的Huffman编码为: 101001010浪的Huffman编码为: 101001011山的Huffman编码为: 101001100记的Huffman编码为: 101001101不的Huffman编码为: 101001110个的Huffman编码为: 101001111何的Huffman编码为: 1010100无的Huffman编码为: 1010101住的Huffman编码为: 101011000字的Huffman编码为: 101011001惧的Huffman编码为: 101011010道的Huffman编码为: 101011011它的Huffman编码为: 101011100把的Huffman编码为: 101011101再的Huffman编码为: 101011110重的Huffman编码为: 101011111燕的Huffman编码为: 101100000唱的Huffman编码为: 101100001暖的Huffman编码为: 101100010与的Huffman编码为: 101100011孤的Huffman编码为: 101100100直的Huffman编码为: 101100101首的Huffman编码为: 101100110去的Huffman编码为: 101100111却的Huffman编码为: 101101000比的Huffman编码为: 101101001样的Huffman编码为: 101101010离的Huffman编码为: 101101011方的Huffman编码为: 101101100芽的Huffman编码为: 101101101候的Huffman编码为: 101101110情的Huffman编码为: 101101111伦的Huffman编码为: 101110000搂的Huffman编码为: 101110001手的Huffman编码为: 101110010肩的Huffman编码为: 101110011触的Huffman编码为: 101110100群的Huffman编码为: 101110101疼的Huffman编码为: 101110110抱的Huffman编码为: 101110111恐的Huffman编码为: 101111000痛的Huffman编码为: 101111001做的Huffman编码为: 101111010变的Huffman编码为: 101111011独的Huffman编码为: 101111100能的Huffman编码为: 101111101让的Huffman编码为: 101111110对的Huffman编码为: 101111111我的Huffman编码为: 1100一的Huffman编码为: 1101000时的Huffman编码为: 1101001就的Huffman编码为: 110101也的Huffman编码为: 110110自的Huffman编码为: 110111为的Huffman编码为: 11100爱的Huffman编码为: 11101母的Huffman编码为: 111100泪的Huffman编码为: 111101豪的Huffman编码为: 111110国的Huffman编码为: 111111

[1, 0, 0, 1, 1, 1, 1, 0, 1, 9][0, 1, 1, 1, 1, 0, 0, 0, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 0, 1, 0, 0, 1, 1, 7, 8, 9][1, 0, 1, 1, 1, 0, 1, 1, 0, 9][1, 0, 1, 1, 1, 1, 0, 0, 1, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 1, 1, 1, 1, 0, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 1, 1, 1, 0, 1, 1, 1, 9][0, 0, 1, 0, 0, 1, 0, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 0, 0, 0, 9][1, 0, 0, 0, 1, 1, 0, 1, 1, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 0, 0, 0, 1, 1, 9][1, 0, 1, 1, 0, 0, 1, 0, 1, 9][1, 0, 1, 1, 1, 1, 0, 1, 0, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 0, 1, 0, 9][1, 0, 1, 1, 0, 1, 0, 1, 0, 9][1, 0, 1, 1, 1, 0, 1, 0, 0, 9][1, 0, 0, 0, 0, 0, 1, 1, 0, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 0, 1, 0, 9]00[1, 0, 0, 1, 1, 1, 1, 0, 1, 9][0, 1, 1, 1, 1, 0, 0, 0, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 0, 0, 0, 0, 0, 9][1, 0, 0, 0, 0, 0, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 0, 1, 0, 0, 1, 1, 1, 9][1, 0, 1, 1, 0, 1, 1, 1, 0, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 0, 1, 0, 1, 0, 0, 1, 9][1, 0, 0, 0, 1, 1, 1, 0, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 0, 1, 0, 0, 0, 1, 1, 9][1, 0, 0, 0, 0, 1, 0, 0, 1, 9][1, 0, 0, 0, 1, 1, 0, 0, 1, 9][1, 0, 1, 1, 0, 0, 0, 1, 0, 9]00[1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 1, 1, 1, 9][1, 0, 0, 1, 0, 0, 0, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 1, 0, 0, 1, 0, 9][1, 0, 0, 0, 0, 1, 1, 0, 0, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][0, 0, 1, 0, 0, 1, 0, 7, 8, 9][0, 0, 1, 0, 0, 1, 0, 7, 8, 9][1, 0, 1, 1, 1, 0, 0, 0, 1, 9][1, 0, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 1, 0, 0, 1, 1, 9][0, 1, 0, 0, 1, 1, 0, 1, 1, 9]00[0, 0, 1, 0, 0, 0, 6, 7, 8, 9][1, 1, 0, 1, 0, 0, 1, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 0, 0, 1, 0, 0, 9][1, 0, 1, 1, 1, 1, 1, 0, 0, 9][1, 0, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 0, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 1, 0, 0, 9][1, 0, 0, 0, 0, 1, 0, 0, 0, 9][0, 1, 0, 0, 1, 0, 0, 7, 8, 9][1, 0, 0, 0, 0, 0, 0, 1, 0, 9][1, 0, 0, 0, 0, 0, 0, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 1, 0, 0, 9][0, 1, 1, 0, 0, 0, 0, 1, 1, 9]00[1, 0, 0, 0, 1, 0, 1, 1, 0, 9][0, 1, 1, 1, 1, 0, 1, 1, 1, 9][1, 0, 0, 1, 0, 1, 0, 1, 1, 9][1, 0, 0, 1, 1, 0, 0, 0, 1, 9][0, 1, 1, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 1, 1, 0, 0, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 0, 1, 0, 1, 9][1, 0, 1, 0, 1, 1, 0, 0, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 1, 1, 1, 0, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 0, 1, 0, 0, 9][1, 0, 1, 0, 0, 0, 0, 0, 0, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9]00[0, 0, 1, 0, 0, 0, 6, 7, 8, 9][1, 1, 0, 1, 0, 0, 1, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 1, 0, 0, 1, 1, 1, 9][1, 0, 1, 1, 0, 0, 1, 1, 1, 9][1, 0, 1, 1, 0, 1, 1, 0, 0, 9][1, 0, 1, 0, 0, 0, 1, 1, 0, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 0, 0, 1, 0, 0, 7, 8, 9][1, 0, 1, 1, 0, 1, 0, 1, 1, 9][1, 0, 1, 1, 1, 0, 1, 0, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 0, 0, 0, 0, 0, 9][0, 1, 1, 0, 0, 0, 0, 1, 1, 9]00[0, 1, 0, 0, 1, 0, 1, 7, 8, 9][0, 1, 1, 1, 1, 0, 1, 1, 1, 9][1, 0, 0, 1, 0, 1, 0, 1, 1, 9][1, 0, 0, 1, 1, 0, 0, 0, 1, 9][0, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 1, 0, 0, 1, 1, 7, 8, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 0, 0, 1, 0, 0, 9][0, 1, 1, 0, 1, 1, 0, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 1, 1, 0, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 1, 1, 1, 1, 0, 9][0, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 0, 1, 0, 0, 1, 1, 7, 8, 9][1, 0, 1, 1, 1, 1, 0, 0, 0, 9][1, 0, 1, 0, 1, 1, 0, 1, 0, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[0, 0, 1, 0, 0, 0, 6, 7, 8, 9][1, 1, 0, 1, 0, 0, 0, 1, 1, 9][1, 0, 0, 1, 0, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 0, 0, 0, 1, 9][1, 0, 1, 1, 0, 0, 1, 1, 0, 9][1, 0, 0, 0, 0, 1, 0, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 1, 1, 1, 0, 1, 1, 9][0, 1, 1, 0, 0, 0, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][0, 1, 1, 0, 0, 0, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 0, 0, 0, 9][1, 0, 0, 0, 1, 1, 0, 1, 0, 9][0, 1, 0, 0, 1, 0, 0, 7, 8, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 0, 0, 1, 1, 9][1, 0, 1, 1, 0, 1, 1, 0, 1, 9]00[0, 1, 0, 0, 1, 0, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][1, 1, 0, 1, 0, 0, 0, 1, 1, 9][1, 0, 0, 1, 0, 1, 1, 0, 1, 9][1, 0, 0, 1, 0, 1, 1, 0, 1, 9][1, 0, 0, 0, 0, 1, 0, 1, 1, 9][1, 0, 1, 1, 0, 0, 0, 0, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 0, 1, 0, 1, 1, 1, 0, 0, 9][1, 0, 0, 0, 1, 1, 1, 1, 0, 9][1, 0, 0, 0, 0, 0, 1, 0, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 1, 1, 1, 0, 0, 1, 9][1, 0, 0, 1, 0, 0, 0, 0, 1, 9]00[0, 0, 1, 0, 0, 0, 6, 7, 8, 9][1, 0, 0, 1, 1, 0, 1, 0, 1, 9][1, 0, 0, 1, 0, 0, 0, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 0, 1, 0, 1, 9][0, 1, 1, 0, 0, 0, 1, 0, 1, 9][0, 1, 0, 0, 1, 1, 0, 0, 8, 9][1, 0, 0, 1, 0, 0, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][0, 0, 1, 0, 0, 0, 6, 7, 8, 9][1, 0, 0, 1, 1, 0, 1, 0, 1, 9][1, 0, 1, 1, 0, 1, 1, 1, 1, 9][0, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 1, 0, 0, 1, 1, 9][0, 1, 1, 1, 1, 0, 0, 1, 1, 9][1, 0, 1, 0, 0, 0, 0, 1, 0, 9][1, 0, 0, 0, 0, 0, 0, 0, 1, 9]00[0, 1, 0, 0, 1, 0, 1, 7, 8, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 1, 1, 0, 1, 0, 0, 0, 9][1, 0, 0, 1, 1, 1, 0, 1, 1, 9][0, 1, 1, 0, 1, 1, 0, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 1, 1, 0, 0, 0, 1, 1, 9][1, 0, 1, 1, 1, 0, 0, 0, 0, 9][1, 0, 1, 1, 0, 1, 0, 0, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 0, 1, 1, 0, 1, 9][1, 0, 0, 0, 1, 0, 1, 0, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 0, 0, 1, 0, 0, 1, 0, 1, 9][0, 1, 1, 1, 1, 0, 1, 0, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 1, 0, 1, 1, 1, 0, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 1, 0, 1, 9][1, 0, 1, 0, 1, 1, 0, 0, 0, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 0, 1, 0, 0, 1, 0, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 1, 0, 0, 1, 0, 0, 1, 9][0, 1, 1, 0, 0, 0, 0, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 0, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 0, 1, 1, 0, 1, 1, 1, 9][0, 1, 1, 0, 1, 1, 0, 1, 1, 9][1, 0, 1, 0, 1, 0, 0, 1, 1, 9][1, 1, 0, 1, 0, 0, 1, 1, 1, 9][1, 0, 1, 0, 1, 0, 0, 1, 1, 9][1, 0, 0, 1, 1, 0, 0, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 1, 0, 1, 0, 0, 1, 9][0, 1, 1, 0, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 0, 1, 1, 1, 0, 9][1, 0, 0, 1, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9]00[1, 0, 0, 1, 0, 0, 1, 0, 1, 9][0, 1, 1, 1, 1, 0, 1, 0, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 1, 1, 1, 1, 1, 0, 1, 9][0, 1, 0, 0, 1, 1, 0, 1, 0, 9][1, 0, 0, 0, 0, 1, 1, 1, 1, 9][1, 0, 1, 0, 1, 1, 0, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 0, 1, 1, 1, 1, 1, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 0, 1, 1, 0, 0, 0, 9][1, 0, 1, 0, 0, 0, 0, 0, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 0, 1, 0, 1, 0, 1, 1, 1, 9][1, 0, 0, 1, 1, 0, 1, 1, 1, 9][0, 1, 1, 0, 1, 1, 0, 1, 1, 9][1, 0, 1, 0, 1, 0, 0, 1, 1, 9][1, 1, 0, 1, 0, 0, 1, 1, 1, 9][1, 0, 1, 0, 1, 0, 0, 1, 1, 9][1, 0, 0, 1, 1, 0, 0, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 0, 1, 1, 1, 1, 9][0, 1, 1, 0, 1, 0, 1, 1, 1, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 0, 0, 1, 1, 1, 0, 0, 1, 9][1, 0, 0, 1, 0, 0, 0, 0, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 0, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]00[1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 0, 1, 0, 1, 1, 1, 7, 8, 9][1, 1, 1, 1, 1, 1, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 1, 0, 1, 1, 1, 1, 1, 9][0, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 0, 0, 1, 1, 1, 9][0, 1, 1, 1, 0, 1, 1, 1, 1, 9][0, 0, 1, 1, 1, 1, 1, 7, 8, 9][1, 1, 0, 0, 1, 1, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][0, 1, 0, 0, 0, 1, 1, 7, 8, 9][1, 1, 1, 1, 0, 1, 1, 1, 1, 9][1, 1, 0, 1, 1, 0, 1, 1, 1, 9][1, 1, 1, 0, 0, 1, 1, 1, 1, 9][0, 0, 0, 3, 4, 5, 6, 7, 8, 9][1, 1, 0, 1, 1, 1, 1, 1, 1, 9][1, 1, 1, 1, 1, 0, 1, 1, 1, 9]
Process finished with exit code 0

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您解答。 首先,贪心算法是一种求解最优化问题的算法,其思想是在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优或者最优近似解的算法。贪心算法的核心是贪心选择性质和最优子结构性质。 其次,霍夫曼编码是一种无损数据压缩算法,它将出现频率较高的字符用较短的编码表示,而用较长的编码表示出现频率较低的字符,从而实现数据压缩的目的。霍夫曼编码的核心是构建霍夫曼树,使用贪心算法构建霍夫曼树。 下面是一个用Python实现霍夫曼编码的示例代码,供您参考: ```python import heapq from collections import defaultdict class HuffmanCoding: def __init__(self, text): self.text = text self.freq = defaultdict(int) self.heap = [] self.codes = {} self.reverse_codes = {} def create_frequency_dict(self): for char in self.text: self.freq[char] += 1 def create_heap(self): for key in self.freq: heapq.heappush(self.heap, (self.freq[key], key)) def merge_nodes(self): while len(self.heap) > 1: freq1, char1 = heapq.heappop(self.heap) freq2, char2 = heapq.heappop(self.heap) merged_freq = freq1 + freq2 merged_char = char1 + char2 heapq.heappush(self.heap, (merged_freq, merged_char)) def create_codes(self): root = self.heap[0][1] self._create_codes_helper(root, "") def _create_codes_helper(self, root, current_code): if len(root) == 1: self.codes[root] = current_code self.reverse_codes[current_code] = root return self._create_codes_helper(root[0], current_code + "0") self._create_codes_helper(root[1], current_code + "1") def encode(self): encoded_text = "" for char in self.text: encoded_text += self.codes[char] return encoded_text def decode(self, encoded_text): current_code = "" decoded_text = "" for bit in encoded_text: current_code += bit if current_code in self.reverse_codes: char = self.reverse_codes[current_code] decoded_text += char current_code = "" return decoded_text if __name__ == '__main__': text = "hello world" huffman = HuffmanCoding(text) huffman.create_frequency_dict() huffman.create_heap() huffman.merge_nodes() huffman.create_codes() encoded_text = huffman.encode() decoded_text = huffman.decode(encoded_text) print("Original text: ", text) print("Encoded text: ", encoded_text) print("Decoded text: ", decoded_text) ``` 希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪里摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值