算法测试例子特殊输入形式

写算法时,总会遇到这种测试例子

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

原文地址:https://www.cnblogs.com/-rainbow-/p/10589384.html