C++笔记(6)——关于OJ的单点测试和多点测试
单点测试
PAT使用的就是单点测试(LeetCode应该也是单点测试)。单点测试中系统会判断每组数据的输出结果是否正确,正确则通过测试并获得这则测试的分值。题目的总得分等于通过的数据的分值之和。
代码编写上单点测试只要求程序能够按照正常逻辑执行一遍。
多点测试
多点测试要求程序能够一次性运行所有数据,并且要求所有输出结果都完全正确才能AC,只要一组数据输出错误那么这题就只能0分。大部分OJ都是这种方式。只有这种方式才能严格考验写出的代码是否严谨。多点测试的程序需要能够运行所有数据,所以必须保证程序有办法反复执行代码核心部分,所以需要用到循环。
通常题目有3中输入格式,下面是对应的输入程序:
while...EOF型
scanf函数返回值为成功读入的参数的个数,当读入失败的时候scanf函数返回-1,而C中使用EOF(End Of File)来表示-1。
while(scanf("%d", &n) != EOF) {
// 这里填运行代码
}
另外有gets(str):
while(gets(str) != NULL) {
// 这里填核心代码
}
while...break型
这是用在题目要求当输入的数据满足某个条件时停止输入时的,例如当输入的a和b都为0时结束输入:
#include <stdio.h>
int main() {
int a, b;
while(scanf("%d%d", &a, &b) != EOF) {
if(a==0 && b==0) break;
printf("%d\n", a+b); // 这里可以换成别的
}
return 0;
}
另一种是将推出条件放在while判断中:
#include <stdio.h>
int main() {
int a, b;
while(scanf("%d%d", &a, &b), a || b) {
printf("%d\n", a+b);
}
return 0;
}
这样当a和b中只要有1个不是0那么就会一直循环下去。
while(T--)型
这种就是每次都会给定测试数据的组数,所以需要变量T来存储程序要执行的次数,最后程序循环执行T次,每次解决一组数据:
#include <stdio.h>
int main() {
int T, a, b;
scanf("%d", &T):
while(T--) {
scanf("%d%d", &a, &b);
printf("%d\n", a+b);
}
return 0;
}
此外,多点测试中要注意每次循环前重置一下变量和数组,重置数组通常用memset或fill。
参考
《算法笔记》 胡凡 著
C++笔记(6)——关于OJ的单点测试和多点测试的更多相关文章
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用
目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...
- web测试与app测试的区别
才开始做测试就接触的web端,后来也接触app端,所以在这里对于自己工作中所接触到的做一些总结(总要养成总结的好习惯). 对于web端和移动端app,功能方面的测试,例如测试设计方法这些都大同小异,都 ...
- (转)学习使用Jmeter做压力测试(一)--压力测试基本概念
一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0 ...
- app测试与web测试的区别
1.从功能测试的来讲的话,在流程和功能测试上是没有区别的.系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app则是c/ ...
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
随机推荐
- background的水平条纹和斜向条纹
水平条纹: <div id="div1"> </div> linear-gradient属性 #div1{ width: 100px; height: 10 ...
- new/delete、malloc/free 的区别
相同点 1.都可以动态的申请或释放内存 2.存储方式相同,动态申请的内存都存放在堆中,无法自动释放,要调用对应的delete和free 区别 1.new能自行的计算需要分配的空间,malloc需要 ...
- Ubuntu 16.04安装N卡驱动、cuda、cudnn和tensorflow GPU版
安装驱动 最开始在英伟达官网下载了官方驱动,安装之后无法登录系统,在登录界面反复循环,用cuda里的驱动也出现了同样的问题.最后解决办法是把驱动卸载之后,通过命令行在线安装驱动. 卸载驱动: sudo ...
- STM32F407 正点原子按键输入实验
库函数版本: 库函数 源文件 头文件 GPIO_Init(GPIOE, &GPIOE_initstructure) stm32f4xx_gpio.c stm32f4xx_gpio.h RCC_ ...
- 01JAVA入门
1 Welcome to java public class ch01Welcome { public static void main(String[] args) { System.out.pri ...
- 如何获得带转义的json内容
stringify两次 JSON.stringify(JSON.stringify(obj))
- zookeeper之四 Curator客户端的使用
Curator是一个开源的zookeeper客户端,解决了很多zookeeper原生客户端非常底层的细节开发工作,如连接重试.反复注册watcher等. public class CuratorOpe ...
- ajax请求成功,但是进入error
ajax请求成功,这是因为json数据没有严格按json格式返回
- web移动端适配方案
web移动端常用解决方案: 一.通过js+rem,这里有一个解决方案(http://imochen.github.io/hotcss/) 1.1.rem兼容性(https://caniuse.com) ...
- 区间查询异或最大值——cf1100F,hdu6579
cf1100F是静态区间查询最大值,有离线的解法,我感觉线段树或者莫队应该都能过 更优秀的解法可以在线并支持修改,可以解决hdu6579,即依次插入每个数,pos[i][j]表示在插第i个数时第j个基 ...