def stackQue(n,ls): """ 假設入棧序列是1-n,如何判斷一個給定的出棧序列是合法的,判斷依據: 出棧序列中的每一個數的後面比它小的數是按照遞減順序排序的 """ if len(ls)!=n: return False i=0 while i<len(ls): tmpl=[c for c in ls[i:] if ls[i]>c] if not isSort(tmpl): return False i+=1 return True def isSort(ls,reverse=False): """ 判斷一個序列是否按照順序排列,reverse=True正序 """ print(ls) if not reverse: i=0 while i<len(ls)-1: if ls[i]<ls[i+1]: return False i+=1 return True else: i=0 while i<len(ls)-1: if ls[i]>ls[i+1]: return False i+=1 return True if __name__=='__main__': print(stackQue(5,[4,5,2,3,1]))