尽管是比赛后做的,距今也有不少时间了,但觉得里面题目很具有思考价值,因此在此写下前4题题解。
A.求两个最近的最小值的距离
输入n个数,求两个最近的最小值的距离(数据保证至少存在两个最小值)
思路大致如下,水
for(i=0;i<n;i++)
scanf("%ld",&a[i]);
for(i=1;i<n;i++)
{
if(a[min]>a[i])
min=i;
}
j=min;
for(i=min+1;i<n;i++)
{
if(a[i]==a[j])
{
if(d>(i-j))
d=i-j;
j=i;
}
}
首先求出第一个最小值得位置,然后以此作为媒介,如果遇到和它一样大的,则计算距离,并更新。。。。然后就做出来了