蓝桥杯【JAVA】——最小乘积(基本型)

博客介绍了一个题目的解题思路,每组两行数据分别放入两个数组,对数组元素从大到小排序,将第一个数组元素依次与第二个数组对应倒数位置元素相乘后相加,还提及会给出程序代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、题目:
在这里插入图片描述在这里插入图片描述
2、思路:

  • 每组有两行数据,将两行数据分配到两个数组中,每个数组中的元素按照从大到小排序,第一个数组第一个元素乘以第二个数组最后一个元素,第一个数组第二个元素乘以第二个数组倒数第二个元素,以此类推,最后相加即为所求

3、程序代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner get=new Scanner(System.in);
		int T=get.nextInt();
		for(int n=0;n<T;n++) {
			int answer=0;
			int num=get.nextInt();
			int first[]=new int[num];
			int second[]=new int[num];
			for(int i=0;i<num;i++) {
				first[i]=get.nextInt();
			}
			for(int i=0;i<num;i++) {
				second[i]=get.nextInt();
			}
			
			sort(first);
			sort(second);
			for(int i=0;i<num;i++) {
				answer+=first[i]*second[num-i-1];
			}
			System.out.println(answer);
		}
		get.close();
	}
	public static void sort(int arr[]) {//从大到小排序
		for(int i=0;i<arr.length-1;i++) {
			for(int j=i+1;j<arr.length;j++) {
				if(arr[i]<arr[j]) {
					int sort=arr[i];
					arr[i]=arr[j];
					arr[j]=sort;
				}
			}
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九思梦鹿

喜欢,请记得点赞或赞赏哟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值