POJ 1363 Rails 栈的应用

    关于本题我只想说。。。。审题!!!  题目要求输出Yes/No  我看成YES/NO 找了一上午看discuss才发现也有和我一样傻逼的人!! 要不是看了discuss, 估计会花我一天时间 T^T

 

    还有就是,据学长的话说,尽量少用模板,我就下定决心,还是手写吧……

 

 

MemoryTime
168K63MS

 

 

#include <cstdio>
int main()
{
    void push(int *stack, int *top, int n);
    int pop(int *stack, int *top);
    int n, num[1001], stack[1001];
    while(scanf("%d", &n), n != 0)
    {
        int first, IsJudge;

        while(scanf("%d", &first), first != 0)
        {
            IsJudge = 0;
            num[0] = first;
            int i, top = 0;
            for(i = 1; i < n; i++)
            {
                scanf("%d", &num[i]);
            }
            int j = 1;
            for(i = 0; i < n; i++)
            {
                for(; j <= num[i]; j++)
                {
                    push(stack, &top, j);
                }
                if(num[i] == stack[top - 1])
                {
                    pop(stack, &top);
                    continue;
                }

                if(num[i] < j)
                {
                    if(stack[top - 1] != num[i])
                    {
                        printf("No\n");
                        IsJudge = 1;
                        break;
                    }
                    else
                    {
                        pop(stack, &top);
                    }
                }
            }
            if(!IsJudge)
                printf("Yes\n");
        }
        printf("\n");
    }
    return 0;
}

void push(int *stack, int *top, int n)
{
    stack[*top] = n;
    (*top)++;
}

int pop(int *stack, int *top)
{
    (*top)--;
    return stack[*top];
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值