1. 程式人生 > >兩組資料相同下標元素對應相乘,然後相加的和最小

兩組資料相同下標元素對應相乘,然後相加的和最小

問題描述

 

  給兩組數,各n個。

   請調整每組數的排列順序,使得兩組資料相同下標元素對應相乘,然後相加的和最小。要求程式輸出這個最小值。

   例如兩組數分別為:1 3 -5和-2 4 1

 

  那麼對應乘積取和的最小值應為:

  (-5) * 4 + 3 * (-2) + 1 * 1 = -25

 

輸入格式

 

  第一個行一個數T表示資料組數。後面每組資料,先讀入一個n,接下來兩行每行n個數,每個數的絕對值小於等於1000。

  n<=8,T<=1000

 

輸出格式

 

  一個數表示答案。

 

樣例輸入

2

3

1 3 -5

-2 4 1

5

1 2 3 4 5

1 0 1 0 1

import java.util.Arrays;
import java.util.Scanner;

public class ALGO53 {
public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int m = sc.nextInt();
	while((m--)>0){
		int n = sc.nextInt();
		int arr [] = new int[n];
		int arr1 [] = new int[n];
		for(int i=0;i<n;i++){
			arr[i]=sc.nextInt();
		}
		for(int i=0;i<n;i++){
			arr1[i]=sc.nextInt();
		}
		Arrays.sort(arr);
		Arrays.sort(arr1);
		    int sum =0;
	    for(int i=0;i<n;i++){
	    	sum+=(arr[i]*arr1[n-i-1]);
	    }
	    System.out.println(sum);
	}
	
}
}

樣例輸出

-25

6