练习算法时,很多时候可以将自己的代码跟网上提供的标准代码比对,既可以学习别人的写法,另外也可以找出自己代码存在的问题,方便调试。对拍就是一种很好的调试代码的方式。

对拍总共需要提供4份文件:

  1. 标准代码:std.cpp
  2. 自己的代码:my.cpp
  3. 随机数生成器:rand.cpp(用于为代码提供输入)
  4. 批处理程序:对拍.bat (使上述3分代码跑起来,前提是以上3份代码已经编译,rand生成随机数为1和2提供数据,1和2输出结果并比对输出)

如果std.exe和my.exe输出结果一致,则输出:无差异,并继续循环执行,否则:输出两份代码的不同结果,程序执行结束。 此时我们要调试自己的代码需要知道当前输入,输入数据就存在data.in中,可以直接取出来调试代码。
对拍.bat如下所示:

@echo off
:loop  rand.exe>data.in  std.exe<data.in>std.outmy.exe<data.in>my.out  fc my.out std.out
if not errorlevel 1 goto loop
pause
goto loop

下面举个简单的例子,求两个数的商,结果保留两位小数。
1 my.cpp

#include <cstdio>
int main(){int a,b;while (~scanf("%d%d", &a, &b)){printf("%d\n",a/b);}return 0;
}

2 std.cpp

#include <cstdio>
int main(){int a,b;while (~scanf("%d%d", &a, &b)){float res = a*1.0/b;printf("%.2f\n",res);}return 0;
}

3 rand.cpp

#include <ctime>
#include <iostream>
using namespace std;
int main(){srand(time(0));printf("%d %d",rand()%20,rand()%20);return 0;
}

接下来现将上述3份代码编译,得到3个可执行文件并和对拍.bat放置于同一个文件夹下。然后点击 对拍.bat执行即可。
某一得到的结果如下所示:

正在比较文件 my.out 和 STD.OUT
***** my.out
0
***** STD.OUT
0.75
*****

我们可以看看data.in中的数据为:

12 16

因此,我们可以发现,my.cpp中得到的结果是整数而不是浮点数造成当前的问题。使用过程中,其实复杂的地方在于有些数据造起来很麻烦,尤其对于较复杂的问题,如图论中的某些问题等。

算法练习工具之代码对拍相关推荐

  1. 算法竞赛训练指南代码仓库_数据仓库综合指南

    算法竞赛训练指南代码仓库 重点 (Top highlight) As a data scientist, it's valuable to have some idea of fundamental ...

  2. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

  3. [译]时间自动机:语义,算法和工具

    本文原题是<Timed Automata Semantics, Algorithms and Tools>,本人硕士毕业设计与此相关,研究了好久,现在自行翻译出来.转载请注明版权. 时间自 ...

  4. 一小时写给同组的如何使用工具检测代码质量

    因为要做个小项目,同组的同事都比较年轻,为了规范下代码,因此简单的写了下怎么提高代码质量,分享一下: 在接口不通的情况下进行单元测试 使用Mockito, 如果获取余额部分代码为: public cl ...

  5. [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  6. matlab中的covsfa什么意思,MALSAR1.1 多种多任务学习算法的工具箱 有代码有使 册 matlab版 238万源代码下载- www.pudn.com...

    文件名称: MALSAR1.1下载 收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 2536 KB 上传时间: 2014-11-04 下载次数: 1 提 供 者: ...

  7. 大学四年一路走来,我把这些私藏的算法学习工具全贡献出来了!

    大家都知道,数据结构和算法一直是学习编程和求职路上的一个大的拦路虎,而且不管是大厂还是小厂,在笔试和面试时都是在重点考察数据结构+算法题. 这篇文章就把自己当时在学习数据结构和算法路上私藏的一些比较好 ...

  8. [C语言]描述算法的工具——流程图

    大家好,我是壮!这篇文章讲述一下描述算法的工具--流程图.我会以一个简单的程序(判断闰年),来给大家介绍三个方法,分别是传统流程图.结构化流程图和伪代码. 举例程序 #include<stdio ...

  9. MUSIC算法原理及MATLAB代码 阵列信号处理

    MUSIC算法原理及MATLAB代码 阵列信号处理 MUSIC(multiple signal classification algorithm)算法是一种基于矩阵特征空间分解的方法.从几何角度讲,信 ...

最新文章

  1. AndroidFFmpeg
  2. CF #737(div2)C. Moamen and XOR 与和异或-找规律
  3. Spring Boot 拦截器
  4. PHP连接MySQL报错:Fatal error: Call to undefined function mysql_connect()之解决方法
  5. 涂鸦智能dubbo-go亿级流量的实践与探索
  6. 数据结构链表知识入门
  7. 3d 室内地图_微软科研人员欲通过3D点云混淆技术保护AR定位隐私
  8. Web前端工作笔记002---$(function(){})和$(document).ready(function(){}) 的区别
  9. Redis 通配符查找及批量删除key
  10. S3VM和TSVM的不同
  11. LANP+KEEPALIVED集群(三)
  12. hdu 6202 cube cube cube
  13. 5V转1.8V稳压芯片,3.7V转1.8V稳压芯片
  14. 速解元宇宙 / Metaverse 迷雾下的行动指南
  15. 0024-华为OD机考:身高--体重排序
  16. windows系统修复
  17. Vuex、axios以及跨域请求处理
  18. [递推] 51Nod1383 整数分解为2的幂
  19. 管管我吧,我很听你的话
  20. 通过模拟实验脚本还原阿里巴巴的四个苦逼小朋友抢购月饼现场

热门文章

  1. 做跨境电商的货源应该如何解决?
  2. java 数据立方_写一个Java应用程序,从键盘输入一个整数,然后输出它的平方值立方值...
  3. 东师大计算机应用基础20秋在线作业1,东师计算机应用基础20秋在线作业1答案
  4. IDEA中将springboot项目改新名字
  5. HTML、JQ+JS实现无限滚动条列表
  6. virtualbox 给Linux磁盘扩容
  7. Dcoker发布.netcore程序的三种方式
  8. 解决vue打包部署微信小程序升级清理缓存问题
  9. OSChina 周日乱弹 —— 十种套套新用法(多图)
  10. 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)