您的位置:首页 > 编程语言 > Go语言

数据科学001Coursera课程Algorithmic Toolbox 第一周总结

2020-03-02 00:22 986 查看

算法工具箱 Algorithmic Toolbox

学习目标

  1. 联系实现算法
  2. 练习测试和压力测试程序
  3. 估计慢算法和快算法的不同

 

算法是计算机科学的核心

 

我们编写的程序应当能够应对所有允许的输入并且给出正确的结果,同时还要满足一定的时间限制和内存限制。

Maximum Pairwise Product

Problem

Given a sequence of non-negative integers a0,…,an−1, find the maximum pairwise product, that is, the largest integer that can be obtained by multiplying two different elements from the sequence (or, more formally, max 0≤i≠j≤n−1 aiaj). Different elements here mean ai and aj with i≠j (it can be the case that ai=aj).

Input format

The first line of the input contains an integer n. The next line contains n non-negative integers a0,…,an−1 (separated by spaces).

Constraints

2≤n≤2⋅105; 0≤a0,…,an−1≤105.

Output format

Output a single number — the maximum pairwise product.

 

对于C/C++ 来说,本题需要考虑的一个问题就是输出的结果可能会溢出,因为10的10次方远远超过整形数据所能表示的最大值,因此在使用C/C++时 可以考虑使用long long型来表示结果。对于python则不存在溢出的问题。

 

压力测试

测试技术

  1. 一些简单的手工编写的用例
  2. 测试所有可能的答案(包括最小/最大输出,结果不存在等)
  3. 测试时间/内存限制,编写允许的最多的输入的用例来测试时间和内存的消耗
  4. 测试边界值,包括

最小允许的“n”,即输入的序列或者字符串长度,查询的数量等

相同的数字,字符串中相同的字符,更通俗的说,输入中两个相同的项。没有限制输入必须不同的问题都有可能有两个相同的输入

问题允许输入的最大数字,比如测试一些整数溢出

一些退化的用例,比如空集,单链二叉树等

 

当这些方法都尝试过,但仍然有一些用例无法通过时,可以尝试压力测试。

压力测试包括四部分

  1. 你要想测试的解决方案
  2. 一个不同的,可能是琐碎,很慢的但是又非常容易实现而且明显是一个正确的解决问题的方法
  3. 一个用例生成程序
  4. 一个无限循环程序,生成用例然后用1和2进行测试比对结果,如果结果不同则反馈测试用例和两个不同的结果。

如果两个方案一对一错,则一定存在结果不同的用例。即使两个方案都存在错误,只要错误不同,也有很大概率两个方案在某些用例给出不同结果。这些都可以用来定位错误。尽量多尝试较小的导致错误的测试用例,这样定位错误也会比较快捷,同时尝试不同的测试空间来产生压力测试的用例。

转载于:https://www.cnblogs.com/Libra-Beta/p/7411759.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
LYG2016 发布了0 篇原创文章 · 获赞 0 · 访问量 15 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: