1344: 最小的数

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
****************************************************************/

猜你喜欢

转载自blog.csdn.net/qq_39507723/article/details/83720662
今日推荐