标签:匹配 return 计算 ast 一对多 技术 自动 方向 思想
数据结构按照其逻辑结构可分为线性结构、树结构、图结构
思路:从上一个节点开始,任意找下一个能走的节点,当找到不能走的节点时,退回到上一个节点,寻找是否有其他方向的点
方法:创建一个栈,首先将入口的位置进栈,当栈不空时候循环,获取栈顶元素,寻找下一个可走的相邻方块,如果找不到可走的相邻方块,说明当前是死路,进行回溯(将当前的点出栈,查看前面的点是否还有其他出路),体现深度优先的思想
思路:从一个节点开始寻找,寻找下面能继续走的点,继续寻找直到能找出出口
方法:创建一个空队列,将起点位置入队,在队列不空时循环,出队一次,如果相邻的位置为出口,则结束.否则找出4个相邻方块中可走的方块,全部入队,体现广度优先的思想
n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。
#n表示总人数,m表示报到的数 def yuesefu_1(n,m): #1.将所有元素放进列表中,并定义初始的下标为0 people = [i for i in range(1,n+1)] x = 0 #2.在列表不空的时候循环 while len(people) > 0: #3.计算报数的人的下标, # 1,2,3,4,5,6,7,8 报数 # 0,1,2,3,4,5,6,7 下标,每次取出对总人数的余数就是要找的人 dead_location = (x+(m-1))%len(people) yield people.pop(dead_location) #将找到的人移除出列表 x = dead_location #从移除出去的人的位置上,继续执行 print(list(yuesefu_1(9,4)))
class LinkList: #自定义链表实现类 class Node: def __init__(self,item=None): self.item = item self.next = None class LinkListIterator: def __init__(self,node): self.node = node def __next__(self): if self.node: cur_node = self.node self.node = cur_node.next return cur_node.item def __iter__(self): return self def __init__(self,iteratbe=None): self.head = LinkList.Node(0) self.tail = self.head self.extend(iteratbe) #链表添加 def append(self,obj): s = LinkList.Node(obj) self.tail.next = s self.tail = s #链表扩展 def extend(self,iterable): for obj in iterable: self.append(obj) self.head.item += len(iterable) def remove_nth_node(self,node,m): #删除链表第n个元素 for i in range(m-2): node = node.next p = node.next node.next = p.next self.head.item -= 1 return p def __iter__(self): return self.LinkListIterator(self.head.next) def __len__(self): return self.head.item def __str__(self): return ‘<<‘+", ".join(map(str,self)) +">>" def yuesefu_link(n,m): people = LinkList([i for i in range(1,n+1)]) people.tail.next = people.head.next x = people.head.next while len(people)>0: p = people.remove_nth_node(x,m) x = p.next yield p.item print(list(yuesefu_link(9,4)))
标签:匹配 return 计算 ast 一对多 技术 自动 方向 思想
原文地址:https://www.cnblogs.com/bubu99/p/10534679.html