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

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);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值