[華為機試練習題]26.鐵路棧問題,華為練習題
題目
描述: 題目標題:鐵路棧問題
鐵路的調度站如下:
火車編號為:1~9,且不重複。
如:編號分別為“1”、“2”、“3”、“4”、“5”的5個火車順序進站,那麼進站序列為“12345”,全部進站後再順序出站,則出站序列為“54321”,如果先進1,2,然後2出站,然後1出站,然後再3進站、出站,4進站、出站,5進站、出站,那麼出站序列就為21345.
詳細描述:
int JudgeTrainSequence (int maxNum, char *pOutSeq);
輸入參數:
int maxNum:進站的火車最大編號char* pOutSeq:使用字串表示火車出站序列
輸出參數(指標指向的記憶體地區保證有效):
無。
傳回值:
Int: 根據輸入的進站序列判斷,如果輸入的出站序列是可能的,返回1,否則返回0;
練習階段: 進階
代碼
/*---------------------------------------* 日期:2015-07-01* 作者:SJF0115* 題目:鐵路棧問題 * 來源:華為機試練習題-----------------------------------------*/#include <iostream>#include <string.h>#include <stack>using namespace std;/*詳細描述: int JudgeTrainSequence (int maxNum, char *pOutSeq);輸入參數: int maxNum:進站的火車最大編號 char* pOutSeq:使用字串表示火車出站序列輸出參數(指標指向的記憶體地區保證有效): 無。傳回值: Int: 根據輸入的進站序列判斷,如果輸入的出戰序列是可能的,返回1,否則返回0;*/int JudgeTrainSequence (int maxNum, char *pOutSeq){ if(pOutSeq == NULL || maxNum <= 0){ return 0; }//if int size = strlen(pOutSeq); stack<int> trainSeq; // 初始 int index = 1; for(int i = 0;i < size;){ if(trainSeq.empty() || trainSeq.top() < pOutSeq[i] - '0'){ trainSeq.push(index); ++index; }//if else{ trainSeq.pop(); ++i; }//else }//for if(!trainSeq.empty()){ return 0; }//if return 1;}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。