判断出栈顺序(转)
比如入栈顺序是1 2 3 4;则出栈顺序4 3 2 1,1 4 3 2而1 4 2 3就不是
输入:一个整数,然后输入一个入站序列
输出:如果合法,输出yes;否则输出no
输入样例:
3
3 1 2
输出样例
no
#include <stdio.h> int main() { int n; int a[10]; int max; int t; int i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); max=a[0]; for(i=0;i<n;i++) { if(a[i]<a[i+1]&&max>a[i+1]) { puts("No"); return 0; } t=a[i]<a[i+1]?a[i+1]:a[i]; if(max<t) max=t; } puts("Yes"); return 0; }
如果按小到大出来的数,必定是进去就出来,那么比它们还大的数,就不可能比他们还早出来,因为大家最快也是进去就出来,先进去的,必先出来。