NWU_ACM

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用栈优化:

#include <stdio.h>
#define MAXN 1000005
double stack[MAXN], temp;
int n, top;
int main()
{
    while(scanf("%d", &n) != EOF)
    {
        top = 0;
        for(int i = 0; i < n; i++)
        {
            scanf("%lf", &temp);
            if(top == 0) stack[top++] = temp;
            else if(stack[top - 1] == temp) stack[top++] = temp;
            else top--;
        }
        printf("%.2lf\n", top == 0 ? -1 : stack[top - 1]);
    }
    return 0;
}
View Code

 

用2个变量代替栈:

#include <stdio.h>
double ans, temp;
int n, size;
int main()
{
    while(scanf("%d", &n) != EOF)
    {
        size = 0;
        for(int i = 0; i < n; i++)
        {
            scanf("%lf", &temp);
            if(size == 0) ans = temp, size++;
            else if(ans == temp) size++;
            else size--;
        }
        printf("%.2lf\n", ans);
    }
    return 0;
}
View Code

 

posted on 2017-02-12 18:28  NWU_ACM  阅读(89)  评论(0编辑  收藏  举报