有n个数,两两组成二元组,相差最小值是多少?有多少对呢?

本篇博客介绍了一段Java代码,该代码通过读取用户输入的由逗号分隔的数字字符串,将其转换为整数数组,并计算所有可能的两两组合中最小的差值及其出现次数。首先,代码将输入的字符串拆分为多个部分,然后将其转换为整数数组。接下来,它计算所有可能的两元素组合,找出最小差值,并统计该差值的出现次数。

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

Scanner sc=new Scanner(System.in);
System.out.println(“请输入数字,用,分隔,按回车结束输入:”);
String s=sc.nextLine();
//得到string类型的单个数字
String [] a=s.split(",");
//转化成int类型并存入数组
int [] aa=new int[a.length];
int i=0;
for (String q:a
) {
aa[i++]=Integer.valueOf(q);
}
//C n 2 算出有多少组
int len=a.length*(a.length-1)/2;
//存入2维数组,第一个【】存组序号,第二个【】存内容
int[][] arr=new int[len][2];
int i1=0;
for (int j = 0; j <a.length-1 ; j++) {
for (int j1=j+1;j1<a.length;j1++){
arr[i1][0]=aa[j];
arr[i1][1]=aa[j1];
//System.out.println(aa[j1]);
i1++;
}
}
//最小值和统计的初始化
int min=arr[0][0]-arr[0][1]>0?arr[0][0]-arr[0][1]:arr[0][1]-arr[0][0];
int count=0;
for (int p=0;p<len;p++){
if (min > (arr[p][0]-arr[p][1]>0?arr[p][0]-arr[p][1]:arr[p][1]-arr[p][0])) {
min=arr[p][0]-arr[p][1]>0?arr[p][0]-arr[p][1]:arr[p][1]-arr[p][0];
count=1;
}else if (min==(arr[p][0]-arr[p][1]>0?arr[p][0]-arr[p][1]:arr[p][1]-arr[p][0])){
count++;
}
}
System.out.println(min+"—"+count);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值