| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
用了个堆栈总是wa,谁知道为什么啊就是按照顺序入栈,然后弹出j后,再把j之后的按顺序入栈,最后记录最长的栈。
希望牛人指点算法的问题,谢谢!!!
#include<iostream>
using namespace std;
#define MaxStackSize 1050
class Stack
{
private:
int stacklist[MaxStackSize];
int top;
public:
Stack(void);
void Push(int a);
int Pop(void);
int Peek(void);
int count(void);
};
Stack::Stack(){top=-1;}
void Stack::Push(int a)
{
if(top==MaxStackSize-1)
{
exit(1);
}
top++;
stacklist[top]=a;
}
int Stack::Pop()
{
int temp;
if(top==-1)
{
}
temp=stacklist[top];
top--;
return temp;
}
int Stack::Peek()
{
int temp;
if(top==-1)
{
}
temp=stacklist[top];
return temp;
}
int Stack::count()
{
int temp = top +1;
return temp;
}
int main()
{
int a[1050];
int n;
int order=0;
int max=1;
int j;
Stack sign;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sign.Push(0);
sign.Push(0);
while(1)
{
max=sign.Pop();
for(j=max+1;j<n;j++)
{
if(a[j]>a[sign.Peek()])
{
sign.Push(j);
}
}
if(order<sign.count()) order=sign.count();
if(sign.count()==0) break;
}
cout <<order<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator