首页 > 代码库 > Reconnaissance 2(水题)
Reconnaissance 2(水题)
Description
n soldiers stand in a circle. For each soldier his heightai is known. A reconnaissance unit can be made of such twoneighbouring 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; }
Reconnaissance 2(水题)