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);
有n个数,两两组成二元组,相差最小值是多少?有多少对呢?
最新推荐文章于 2020-02-15 00:22:23 发布