• 关于一道算法题的抱怨


    最近没事干,于是在刷天勤论坛创办的一个OJ,题库都是些简单的题,还有各大高校历年的考研上机题,很适合我这种菜鸟。毕竟,没有参加过ACM比赛,也没有受过系统的算法训练。所以也就当成对自己的一种锻炼吧。

    刷了一段时间后,逐渐发现一些问题了,有一次,看了题目的条件后,总是感觉不对,因为按照题目的要求算法,根本得不出来指定的输出结果,所以直接改了题目条件试了一下,果然给的条件错误,还好,那只是一个很明显的错误。然而,昨天又遇到一个题目,这回真的无从下手了。

    题目描述

    给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

    输入

    输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。

    输出

    可能有多组测试数据,对于每组数据,输出一行,给出一个正整数,是5个数中小于a的数的和。

    样例输入

    10 1 2 3 4 11

    样例输出

    10

    来源

    2008年北京大学图形实验室计算机研究生机试真题

    题目还算简单,所以很快就写出了代码:

    #include 
    
    int main()
    {
        int n;
        int temp;
        int result = 0;
        while(scanf("%d", &n) != EOF)
        {
            for(int i = 0; i < 5; i++)
            {
                scanf("%d", &temp);
                if(temp < n)
                    result += temp;
            }
    
            printf("%d\n", result);
        }
    
        return 0;
    }

    总共也就20来行,本地用题目的条件调试,也是OK的,但是提交到OJ以后,结果Wrong Answer。

    想想之后发现,原来有种情况没有考虑到,如:2 3 3 3 3 3,这种输入的话,根本就没有结果,而我却输出了默认的0,但是又不知道应该输出什么,因为题目压根没提。

    所以想想,原来OJ上的题目也是应该出的严密些才对,对于这种特殊情况必须要考虑到,否则做题人根本无从下手;还有就是,多给些输入输出吧,至少让做题人能够检验一些基本的边界条件,否则让人真的很郁闷。

    后记:

    后来发现了为什么是“Wrong Answer”了,更改后的代码如下:

    #include 
    
    int main()
    {
        int n;
        
        while(scanf("%d", &n) != EOF)
        {
            int result = 0;
            for(int i = 0; i < 5; i++)
            {
                int temp;
                scanf("%d", &temp);
                if(temp < n)
                    result += temp;
            }
    
            printf("%d\n", result);
        }
    
        return 0;
    }
    原因就是那个temp的变量,由于是全局的,造成其所在的内存中残存数据,对后面的用例造成了影响。
  • 相关阅读:
    user.table.column, table.column 或列说明无效
    spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务
    easyui-treegrid移除树节点出错
    jquery easyui easyui-treegrid 使用异步加载数据
    Java动态调用webService,axis2动态调用webService
    让IE支持Css3属性(圆角、阴影、渐变)
    float浮动之后高度自适应失效解决方案
    td中使用overflow:hidden; 无效解决方案
    jquery插件select2事件不起作用(select2-3.5.4)
    wsdl自动生成Java代码,根据wsdl生成Java代码
  • 原文地址:https://www.cnblogs.com/panpei/p/2923380.html
Copyright © 2020-2023  润新知