您的位置:首页 > 其它

华为OJ 铁路栈问题

2014-03-27 18:39 197 查看
/******************************************************************************

Copyright (C), 2001-2011, Huawei Tech. Co., Ltd.

******************************************************************************
File Name     :
Version       :
Author        :
Created       : 2013/08/10
Last Modified :
Description   :
Function List :

History       :
1.Date        : 2013/08/10
Author      :
Modification: Created file

******************************************************************************/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <stack>
using namespace std;

/*
详细描述:
int JudgeTrainSequence (int maxNum, char *pOutSeq);
输入参数:
int maxNum:进站的火车最大编号
char* pOutSeq:使用字符串表示火车出站序列
输出参数(指针指向的内存区域保证有效):
无。
返回值:
Int: 根据输入的进站序列判断,如果输入的出战序列是可能的,返回1,否则返回0;

*/

int JudgeTrainSequence (int maxNum, char *pOutSeq)
{
int result=true;
queue<int> inTrains;
stack<int> swapTrains;
for(int i=1;i<=maxNum;i++)
inTrains.push(i+'0');
int outTrainIndex=0;
while(outTrainIndex<maxNum)
{
if(!swapTrains.empty()&&swapTrains.top()==pOutSeq[outTrainIndex])
{
swapTrains.pop();
outTrainIndex++;
}
else if(!inTrains.empty())
{
if(inTrains.front()==pOutSeq[outTrainIndex])
{
inTrains.pop();
outTrainIndex++;
}
else
{
swapTrains.push(inTrains.front());
inTrains.pop();
}
}
else
{
result=false;
break;
}
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: