zoukankan      html  css  js  c++  java
  • 粘一个在UVA和ZOJ都能AC但POJ WR的代码

            翻开刘汝佳的算法竞赛入门经典,看到了很久以前做过的一道题目。用栈模拟火车进站出站。该题在POJ题号为1363,;ZOJ为1259;UVA为514。我没有用栈去做,已经在UVA和ZOJ均AC,但是不晓得POJ为啥过不了。现在把代码贴到下面,等明天清醒了再找漏洞。

    #include <stdio.h>
    
    
    int main()
    {
        int n;
    
        while (scanf("%d", &n) && n) {
    
            int tmp, ma, mi;
    
            while (scanf("%d", &tmp) && tmp) {
    
                ma = mi = tmp;
                int flag = 1;
    
                for (int i=1; i<n; i++) {
    
                    scanf("%d", &tmp);
                    if (tmp>mi && tmp<ma) {
                        flag = 0;
                    }
    
                    if (tmp > ma) {
                        ma = tmp;
                        mi = ma;
                    }
                    else
                        mi = mi <= tmp ? mi : tmp;
                }
                if (flag)
                    printf("Yes\n");
                else
                    printf("No\n");
            }
    
            printf("\n");
        }
    
        return 0;
    }
    


             上面代码有很大的漏洞。首先 3 1 4 2这个数据就过不了。对于这道题,最后我得到的结论是:一列数中,对于每个数,后面比它小的数都应该是降序排列,这样才能满足题目的条件。下面是我经过修改的低效率做法,终于在POJ AC了,依然按照我的那个结论。

    #include <stdio.h>
    
    
    int main()
    {
        int n;
    
        while (scanf("%d", &n) && n) {
    
            int tmp[1005], ma, mi;
    
            while (scanf("%d", &tmp[0]) && tmp[0]) {
    
    
                int flag = 1;
    
                for (int i=1; i<n; i++) {
                    scanf("%d", &tmp[i]);
                }
    
                for (int i=0; i<n; i++) {
                    ma = mi = tmp[i];
                    for (int j=i+1; j<n; j++) {
                        if (tmp[j]>mi && tmp[j]<ma) {
                            flag = 0;
                        }
                        else
                            mi = mi <= tmp[j] ? mi : tmp[j];
                    }
                    if (!flag) break;
                }
                if (flag)
                    printf("Yes\n");
                else
                    printf("No\n");
            }
    
            printf("\n");
        }
    
        return 0;
    }
    


     

  • 相关阅读:
    Mysql常用sql&索引失效场景
    Linux命令demo
    js中浮点数的精度问题
    Linux运行程序出现Cannot execute binary file
    我的第一篇博客文(抽象类练习)
    关于MyEclipse中build path和compiler的jre不匹配
    jQuery操作单选框、多选框是否选中问题
    oracle索引操作
    JS组件多选下拉框Bootstrap之select2 使用心得
    MyEclipse10——java项目clean重新编译
  • 原文地址:https://www.cnblogs.com/zcube/p/4194566.html
Copyright © 2011-2022 走看看