zoukankan      html  css  js  c++  java
  • ACM找bug方案

    测试数据和一些常见的数据都通过了然而还是wrong,可以试试下面的一些解决方案:

        1.数据爆掉

                          ①  可以改变数据类型,以容纳
                          ②  修改当前算法,比如a*a/b可以改写成a/b*a

       2 特殊情况,例如地图只有一行而算法默认的地图是多行的,如两个数刚好相等时,两个数都为0时等等

                         ①  输入极端值测试,根据情况修改程序
                         ②计算过程中算法太复杂,一般情况下代码越少越不容易出现错误,所以中间步骤越少越好,宁愿牺牲时间

      3 精度问题

                       ①使用强制转换,将int转换成double或将double转换成int都有可能会失去精度造成结果的差异
                       ②使用一些函数操作浮点型数据,得到的结果并不是精确的值,比如pow()返回的值是大概值
                       ③尽量不要用两个浮点去比较大小,尤其不能比较两个浮点数是否相等,因为两个浮点数可能不是精确的值

                                     memset(pei,-1,sizeof(pei)) ,pei[key]==-1,会发现这个判断是否,将-1改成0就可以解决

    4 题目看错了,尽管数据过去了,但是还是wrong,这时可以检查是不是看错了题目,这点很重要

     5 其他情况

                      ① 在有了ac程序的情况下,可以使用对拍来找出错误  
                       先用 rand()生成随机数,读入文件中      freopen("F:\in.txt", "r", stdout)
                        再用ac程序跑一遍in.txt,得到out.txt文件  freopen("F:\in.txt", "r", stdin);     freopen("F:\out.txt", "w", stdout);
                       再用自己的程序跑一遍int.txt,得到out.txt文件  freopen("F:\in.txt", "r", stdin);     freopen("F:\out2.txt", "w", stdout);
                      对比out.txt,out2.txt找出错误的数据
     
  • 相关阅读:
    WIN7右下角的声音图标不见了
    无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
    查看表空间信息SQL集合
    Oracle分区表
    Oracle数据库的创建、数据导入导出
    Oracle查询出最最近一次的一条记录
    adb命令
    synergy在Windows和ubuntu 多台PC共享一套键盘鼠标
    git add 之后因为没提交正确文件需要撤销
    make clean-kernel && make kernel
  • 原文地址:https://www.cnblogs.com/carcar/p/8276142.html
Copyright © 2011-2022 走看看