题解 | #火车进站#
火车进站
http://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109
import copy
class Node(object): def init(self,data = 0,front = None): self.data = data self.front = front
class duizhan(object): def init(self): self.__end = None
def ruzhan(self,data):
node = Node(data)
if self.__end == None:
self.__end = node
else:
node.front = self.__end
self.__end = node
def chuzhan(self):
if self.__end == None:
return -1
if self.__end.front == None:
data = self.__end.data
self.__end = None
return data
data = self.__end.data
self.__end = self.__end.front
return data
def isempty(self):
if self.__end == None:
return True
def all_out(dz,chuzhan,ruzhan,n,yichuzhan,hc): if chuzhan == n and ruzhan == n: out.append(yichuzhan) #print(1) return if chuzhan != n: dz1 = copy.deepcopy(dz) a = dz1.chuzhan() if a != -1: ycz = copy.deepcopy(yichuzhan) ycz.append(a) all_out(dz1, chuzhan+1, ruzhan,n,ycz,hc)
if ruzhan != n:
#print(ruzhan)
ycz = copy.deepcopy(yichuzhan)
dz2 = copy.deepcopy(dz)
dz2.ruzhan(hc[ruzhan])
all_out(dz2, chuzhan, ruzhan+1,n,ycz,hc)
global out out = [] n = int(input()) chuzhan,ruzhan = 0,0 hc = list(map(int,input().split())) dz = duizhan() yichuzhan = [] all_out(dz, chuzhan, ruzhan, n, yichuzhan, hc)
out = sorted(out) for items in out: print(*items)
