题目描述:
根据Berland军队的规定,一个巡逻队应当包含两名士兵。由于这两名士兵不能相差太多,它们的身高相差不能超过d厘米。Bob上尉有n名士兵在他的支队中。他们的身高分别是a1,a2,a3…an厘米。一些士兵有着相同的身高。Bob想知道他有多少种能从他的支队中选拔一个巡逻队出来的方案。
方案(1,2)(1,2) 和(2,1)(2,1) 应当被视作是不同的
解题思路:
直接从大到小排序,然后循环判断是否可以形成一个方案即可
#include <stdio.h>
int main(void)
{
int n,d;
int a[1100];
int i,j,t;
int m=0;
scanf("%d %d",&n,&d);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
//排序(从小到大)
for(i=1;i<n;i++)
{
for(j=1+i;j<=n;j++)
{
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
//判断是否可成一个方案
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if((a[j] - a[i]) <= d)
m++;
else
break;
}
}
printf("%d",2*m);//最后不要忘了*2
return 0;
}