您的位置:首页 > 产品设计 > UI/UE

1051. Pop Sequence

2015-07-22 17:01 477 查看
不多说,刘汝佳的《算法入门经典》上的例题,堆栈模拟。

#include <cstdio>
#include <stack>
#include <queue>

using namespace std;

#define MAX 1050

int main(void)
{
int N , M , count;
int data[MAX] ;
int i ;
bool flag = true ;
queue<int>Q ;

//freopen("input.txt" , "r" , stdin);

scanf("%d %d %d" , &M , &N , &count);

for( i = 0 ;  i< N ; i++)
{
Q.push(i+1);
}

while(count--)
{
int temp[MAX] ;
int visited[MAX]= {0};
int j ;
stack<int>S ;
queue<int>qT ;
qT = Q ;

for( j = 0 ; j < N ; j++)
{
scanf("%d" , &temp[j]);
}

j = 0 ;

flag = true ;
//ÅжÏÊDz»ÊÇÄÜͨ¹ý½øÕ»³öջʵÏÖ

while(j<N)
{

while(S.empty() || temp[j] != S.top() )
{
if( qT.empty() || S.size() == M)
{
flag = false ;
break;
}
S.push(qT.front());
qT.pop();

}

if(!flag)break;

//ÕÒµ½ÁË£¬µ¯³ö
S.pop();
j++ ;
}

if(flag)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: