Stress Test: 压力测试:
顾名思义,就是将程式放置在极为极端的情况下进行测试,就好像我们在学测考试前的数次模拟考一样,明明难度比真的考试难很多倍,能够重创学生的考试信心以及早点放弃自我,那为甚么要多花钱一起考呢?这是因为,只有在极端难的测试中,我们才能发现自己的盲点死穴,及早修正及早改善学习中的问题。然而,今天所知的压力测试不再是花钱就能请人帮忙测的了,课程会教我们做一个能解决一样问题的解法就算是暴力法也OK,做出正确输出样本,然后再与我们新的程式同时测压力测试,也就是输入无限随机性资料,比较彼此的答案是否一致,目的是希望新的程式与对照程式结果若能一致,就算是不错的。然而,人算不如天算,不管对照用程式还是新测试程式,都有可能是错误的,只是错的点不一样而已,今天的课程衔接上个题目(Day 7),找出最大乘积的题目:
#include<iostream>#include<vector>using namespace std;long long MaxPairwiseProduct(const vector<int>& numbers){long long result =0;int n = numbers.size();for(int i=0;i<n;i++){for(int j=i+1; j<n;j++){if((long long)numbers[i] * numbers[j] > result){result = numbers[i]*numbers[j];}}}return result;}int main(){int n;cin>>n;vector<int>numbers(n);for(int i=0;i<n;i++){cin>>numbers[i];}int result = MaxPairwiseProduct(numbers);cout<<result<<"\n";}
该程式最终没有通过压力测试,因为随着输入的数值越多计算时间太长,最终导致失败。但是将作为我们测试用的程式
/* Online C++ Compiler and Editor */#include<cstdlib>#include<iostream>#include<vector>using std::vector;using std::cin;using std::cout;long long MaxPairwiseProduct(const vector<int>& numbers){//暴力解,对照组long long result =0;int n = numbers.size();for(int i=0;i<n;i++){ for(int j=i+1; j<n;j++){ if((long long)numbers[i] * numbers[j] > result){ result = numbers[i]*numbers[j]; } }}return result;}long long MaxPairwiseProductFast(const vector<int>& numbers){//快速解,实验组 int n = numbers.size(); int max_index1 = -1; for(int i=0;i<n;i++){ if((max_index1 = -1||(numbers[i]>numbers[max_index1]))){ max_index1 = i; } } inr max_index2 = -1; for(int j=0;j<n;j++){ if((numbers[j]!=numbers[max_index1])&& ((max_index2 == -1)||(numbers[j]>numbers[max_index2]))){ max_index2 = j; } } return ((long long )(numbers[max_index1]))*numbers[max_index2];}int main(){ while(true){ int n=rand()%10+2;//2~11输入 cout<<n<<"\n"; vector<int>a; for(int i=0;i<n;i++){ a.push_back(rand()%10000);//随机测资资料 } for(int i=0;i<n;i++){ cout<<a[i]<<' '; } cout<<"\n"; long long res1 = MaxPairwiseProduct(a); long long res2 = MaxPairwiseProductFasr(a); if(res1!=res2){ cout<<"Wrong answer: "<<res1<<" "<<res2<<"\n"; break; } else{ cout<<"OK"<<"\n"; } } int n; cin>>n; vector<int>numbers(n); for(int i=0;i<n;i++){ cin>>numbers[i]; } long long result = MaxPairwiseProductFasr(numbers); cout<<result<<"\n"; return 0;}
今天就到这里,我尽可能学习。
附上疑似当机跑测试图。