写算法时,总会遇到这种测试例子
1、得到一个数z时,结束输入测试数据,常用的一般为0,-1
例如:
输入
输入包括多组数据。以n等于0结束
每组数据中:
第一行为一个整数n,表示整数的数量。
第二行输入n个整数。
所有输入的数均小于100000。
输出
输出答案。
样例输入
5
1 2 3 3 2
7
1 2 3 4 5 5 6
0
样例输出
1
5
则可以这样实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
while(true){
int n =sc.nextInt();
if(n == 0){
break;
}
//...这里为单组测试数据
}
}
}
2、以EOF结束
输入
输入包含多组数据,以EOF结束,
每组首先输入三个正整数,n,m,k,其中(n,m,k<100)
后输入n个数表示每种零食的价格ai(ai<1000)
输出
输出一个正整数,表示最小花费
样例输入
4 3 2
1 2 3 4
7 3 8
1 2 3 4 5 6 7
样例输出
8
21
Java中实现以EOF结束:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
//...这里为单组测试数据
}
sc.close();
}
}
c或c++中实现以EOF结束:
#include <stdio.h>
int main(){
int n;
while (scanf("%d",&n)!=EOF){ //循环读入n,直到文件末位
//...这里是单组测试数据
}
return 0;
}
在windows平台,一般模拟EOF的输入是在一个新行的开头输入ctrl + z
在unix环境下,是在一个新行的开始出输入ctrl + D
在MacOS下,需要在一个新行的开始输入control+Q,再control + D