对拍程序是什么?
当你的一个程序提交后发现答案错误了,但又不知道错哪,那么你可以找一个能够AC的程序,与你的程序输入相同的数据,并对答案进行比较。
然而,编一个测试数据通常是非常麻烦的事。我们可以编写一个对拍程序,来让计算机来做这种麻烦的事。
准备工作
- 你自己的源程序。在这里,我是用自己编写的归并排序程序作为演示。
// TestSort.cpp #include <iostream> using namespace std; void TestSort(int * arr, int iStart, int iEnd, int iSize) { if (iStart + 1 >= iEnd) return; int iLeft = iStart, iMid = iStart + (iEnd - iStart) / 2, iRight = iMid; TestSort(arr, iLeft, iMid, iSize); TestSort(arr, iMid, iEnd, iSize); int arrTmp[iSize + 1]; for (int i = iStart; iLeft < iMid || iRight < iEnd; i++) { if (iRight >= iEnd || (iLeft < iMid && arr[iLeft] <= arr[iRight])) arrTmp[i] = arr[iLeft++]; else arrTmp[i] = arr[iRight++]; } for (int i = iStart; i < iEnd; i++) arr[i] = arrTmp[i]; } int main() { int iTot; cin >> iTot; int arr[iTot + 1]; for (int i = 1; i <= iTot; i++) cin >> arr[i

本文介绍了如何编写对拍程序来调试算法。通过对比正确的程序和可能存在问题的程序,对相同输入生成的不同输出进行比较,帮助找出程序错误。文章提供了归并排序的对拍实例,包括正确程序、待调试程序和测试数据生成程序。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



