从大一就看这道题,因为看不懂,放到现在,今天大一的问,又看,有翻译,哈哈。题目不难,关键是要知道
1:要取得最短,必须找到间隔最短的两个村庄
2:这间隔不能出现在两端
3:仅仅纠结我个人而已,以为不会是那样的错误,每个样例后面应该加‘\n’的,但没有,应该返回PE啊,结果,WA找来找去都找不到错误。
#include<stdio.h>
int main()
{
int T,n;
scanf("%d",&T);
int min,s1,s2;
int a[50005],i;
while(T--)
{
int flag=0;
scanf("%d",&n);
if(n<=3) flag=1;
for(i=2;i<=n;i++)
scanf("%d",&a[i]);
min=a[n];
for(i=2;i<=n-2;i++)
{
if((a[i+1]-a[i])<=min)
{
min=a[i+1]-a[i];
s1=i;
s2=i+1;
}
}
if(flag==1) printf("0\n");
else
{
printf("%d\n",a[n]+min);
printf("%d %d %d %d\n",s2,n-n+1,n,s1);
}
if(T) printf("\n");//z这里没加竟然不是PE
}
return 0;
}