学习目标:算法学习-Day23
题库:洛谷题库
----------------------------------------------------------------------------------------------------------------------------------------------------
题目:
根据Berland军队的规定,一个巡逻队应当包含两名士兵。由于这两名士兵不能相差太多,它们的身高相差不能超过dd 厘米。Bob上尉有n 名士兵在他的支队中。一些士兵有着相同的身高。Bob想知道他有多少种能从他的支队中选拔一个巡逻队出来的方案。
方案(1,2) 和(2,1) 应当被视作是不同的
输入格式:
第一行两个整数n 和d — Bob的支队中的士兵的数量和最大所被允许的身高差距。第二行包含个空格分开的整数 — Bob支队中所有士兵的身高。
输出格式:
输出一个数 — 高度差不超过d的士兵组成巡逻队的方案数
样例 1 :
输入:
5 10
10 20 50 60 65
输出:
6
样例 2 :
输入:
5 1
55 30 29 31 55
输出:
6
思路:
跟着题目意思走就行。
习题总结及反思:
Math.abs() 返回数的绝对值
至于为什么是count += 2 ?
是因为题目说了(1,2)和(2,1)是两种不同的,所以找到符合条件的一对值,相当于找到了2个方案。
代码如下:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//士兵数量
int n = input.nextInt();
//最大所被允许的身高差距
int d = input.nextInt();
int data [] = new int[n];
//方案数
int count = 0;
for(int i = 0 ; i < n ; i ++)
{
data [i] = input.nextInt();
for(int j = 0 ; j < i ; j ++)
{
if(Math.abs(data[i] - data[j]) <= d) {
count += 2;
}
}
}
System.out.println(count);
}
}