1344: 最小的数
时间限制: 1 Sec 内存限制: 256 MB
题目描述
给你两个一维数组(都为大于等于1且小于等于9的数),从第一个数组中取至少一个数字,再从第二个数组中取至少一个数字,用你选取的数字组成一个整数,求能组成的最小整数。
如果从第一个数组中选取的数与从第二个数组中选取的数相等,只保留一个即可。
输入
第一行:一个整数T,表示测试实例个数
对于每组测试实例:
第一行:包含两个整数n 和 m (1 ≤ n, m ≤ 9) —— 分别表示两个数组的大小
第二行:包含n个整数a1, a2, ..., an (1 ≤ ai ≤ 9) ——第一个数组
第三行:包含m个整数 b1, b2, ..., bm (1 ≤ bi ≤ 9) 第二个数组
输出
每组测试实例输出一行:包含一个整数 —— 能组成的最小整数
样例输入
2 2 3 4 2 5 7 6 8 8 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1
样例输出
25 1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[];
int b[];
int fif[] = new int[n];
for (int i = 0; i < n; i++) {
a = new int[sc.nextInt()];
b = new int[sc.nextInt()];
for (int j = 0; j < a.length; j++) {
a[j] = sc.nextInt();
}
for (int j = 0; j < b.length; j++) {
b[j] = sc.nextInt();
}
fif[i] = f(a,b);
}
for (int i = 0; i < fif.length; i++) {
System.out.println(fif[i]);
}
}
private static int f(int[] a, int[] b) {
int temp = 99;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if(a[i]==b[j]) {
temp = Math.min(a[i], temp);
break;
}else if(a[i]<b[j])
temp = Math.min(a[i]*10+b[j], temp);
else
temp = Math.min(b[j]*10+a[i], temp);
}
}
return temp;
}
}
/**************************************************************
Problem: 1344
User: 20161514325
Language: Java
Result: 正确
Time:242 ms
Memory:14664 kb
****************************************************************/