ci511航班,电影天堂下载网站免费,1.c7799.ws
问题: 星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,把它们上下颠倒个个儿,反复几次之后,这摞烙饼就排好序了。我后来想,这实际上是个有趣的排序问题:假设有n块大小不一的烙饼,那最少要翻几次,才能达到最后大小有序的结果呢?” 你能否写出一个程序,对于n块大小不一的烙饼,输出最优化的翻饼过程呢?#!/usr/bin/python __author__ = 'dell' class node: cakes = [] currentlevel = 0 steps = [] def inputcakes(cakes): global n global upperbound n = int(raw_input('n:')) upperbound = 2 * n - 2 for i in range(0, n): cakes.append(int(raw_input(str(i) + ':'))) def init(): global stack node = node() inputcakes(node.cakes) #node.cakes = swap(node.cakes, 1) stack.append(node) def swap(cakes, position): newcakes = cakes[:] for i in range(0, position / 2 + 1): temp = newcakes[i] newcakes[i] = newcakes[position - i] newcakes[position - i] = temp return newcakes def issorted(cakes): for i in range(0, len(cakes) - 1): if cakes[i] > cakes[i+1]: return false return true def dfs(): global stack global upperbound global n while len(stack) != 0: node = stack[-1] stack.pop() if issorted(node.cakes): print 'found:', node.steps if node.currentlevel 0 and i != node.steps[-1]): childnode = node() childnode.cakes = swap(node.cakes, i) childnode.currentlevel = node.currentlevel + 1 childnode.steps = node.steps[:] childnode.steps.append(i) stack.append(childnode) n = 0 upperbound = 0 stack = [] if __name__ == '__main__': init() dfs()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论