算法笔记系列:2.9 补充 2.10 黑盒测试

2.9.1 cin与cout

  • C++ 中对应scanf和printf的比较方便的输入输出

  • 具体使用方法,以输入多个变量和输出多个变量为例:

cin >> n >> db >> c >> str;//按对应顺序输入
cout << n << db << c << str;//按对应顺序输出
  • cout进行输出时中间是没有空格的,要自己手动加,以及两种换行方式 “\n”和endl

2.9.2 浮点数的比较

  • 浮点数在经过大量计算后,计算机存储可能会有偏差

  • 引入一个很小的数 e p s = 1 0 − 8 eps=10^{-8} eps=108进行修正

  • 为了表示方便定义成宏定义的形式

const double Pi=acos(-1.0);
const double eps=1e-8;

# define Equ(a,b) ((fabs((a)-(b)))<(eps))
# define More(a,b) (((a)-(b))>(eps))
# define Less(a,b) (((a)-(b))<(-eps))
# define MoreEqu(a,b) (((a)-(b))>(-eps))
# define LessEqu(a,b) (((a)-(b))<(eps))
  • 由于精度问题,在经过大量计算后,0可能是一个很小的负数,开跟就会因为不在定义域内进行报错需要用eps保证在定义域内

  • 某些情况下,0.00在输出时会变成-0.00,这是本身编译环境的bug,只能把结果放在字符串中与-0.00比较,然后用eps修正

2.9.3 复杂度

  • 时间复杂度
    • 高等级的幂次会覆盖低等级的幂次

    • 二分查找属于O(logn)

  • 空间复杂度
    • 例如二维数组就是O(n^2)

    • 一般空间都是够用的,考虑空间换时间

  • 编码复杂度

2.10.1 单点测试

程序判断每组数据输出结果是否正确,通过一组数据或者一组数据的分数,PAT就是采用的单点测试

2.10.2 多点测试

多点测试要求程序能一次运行完所有数据,大部分在线评测系统都采用了这种方式

  • while…EOF型:通过读取失败来判断读取已经结束,从而结束程序的循环

  • while…break型:通过判断满足某些结束条件来结束循环

  • while(T–)型:已知有多少组数据,或者知道程序要循环多少次

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值