标签:遍历
Description
n soldiers stand in a circle. For each soldier his height ai is known. A reconnaissance unit can be made of such two neighbouring soldiers, whose heights difference is minimal, i.e. |ai?-?aj| is minimal. So each of them will be less noticeable with the other. Output any pair of soldiers that can form a reconnaissance unit.
Input
The first line contains integer n (2?≤?n?≤?100) — amount of soldiers. Then follow the heights of the soldiers in their order in the circle — n space-separated integers a1,?a2,?...,?an (1?≤?ai?≤?1000). The soldier heights are given in clockwise or counterclockwise direction.
Output
Output two integers — indexes of neighbouring soldiers, who should form a reconnaissance unit. If there are many optimum solutions, output any of them. Remember, that the soldiers stand in a circle.
Sample Input
5 10 12 13 15 10
5 1
4 10 20 30 40
1 2
题意:n个士兵站成一个圈,求相邻差值最小的两个士兵的位置。
ps:因为数据很小,所以可以直接遍历,但是要注意手尾要单独计算
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define inf 999999
int a[1010];
int main()
{
int n,i,j;
int min;
while(~scanf("%d",&n))
{
min=inf;
scanf("%d",&a[1]);
for(i=2;i<=n;i++)
{
scanf("%d",&a[i]);
if(fabs(a[i]-a[i-1])<min)
{
min=fabs(a[i]-a[i-1]);
j=i;//j记录位置;
}
}
if(fabs(a[n]-a[1])<min)//首尾的单独计算
printf("%d 1\n",n);
else
printf("%d %d\n",j-1,j);
}
return 0;
}
标签:遍历
原文地址:http://blog.csdn.net/u013486414/article/details/41146813