1801 - 求最值
时间限制 : 1 秒
内存限制 : 128 MB
设计一个从m个整数中取最小数和最大数的程序
题目输入
第一行输入一个整数n(0<n<=100000),表示有n组数据;
随后n组数据中,每组数据输入一个整数m(0<m<=100),代表该组数据个数,其后一行输入m个整数,空格分隔。
题目输出
输出两个数,第一个为这m个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。
输入/输出样例
输入格式
3 2 1 2 3 4 5 6 5 1 5 9 3 7
输出格式
1 2 4 6 1 9
C语言解答
#include <stdio.h> int main(){ int n, m, i, t, max, min; scanf("%d",&n); while(n--){ scanf("%d",&m); scanf("%d", &t); max=min=t; for(i = 1; i < m; i++){ scanf("%d", &t); if(max < t) max = t; if(min > t) min = t; } printf("%d %d\n", min, max); } return 0; }
C++解答
#include<iostream> using namespace std; int main(){ int n,a[100]; cin>>n; while(n--){ int m,max,min; cin>>m; for(int i=0;i<m;i++) cin>>a[i]; max=min=a[0]; for(int j=1;j<m;j++){ if(a[j]<min) min=a[j]; if(a[j]>max) max=a[j]; } cout<<min<<" "<<max<<endl; } }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int T=sc.nextInt(); while(T-->0) { int n=sc.nextInt(); int arr[]=new int[n]; for(int i=0;i<n;i++) { arr[i]=sc.nextInt(); } insertSort(arr); System.out.println(arr[0]+" "+arr[n-1]); } } public static void insertSort(int arr[]) { for (int i = 1; i < arr.length; i++) { if (arr[i - 1] > arr[i]) { int temp = arr[i]; int j = i; while (j > 0 && arr[j - 1] > temp) { arr[j] = arr[j - 1]; j--; } arr[j] = temp; } } } }