//对于数组a[n],找出max值,max值条件如下:
//0<=i<j; 存在p=a[i],q=a[j], p<=q && p与q之间不存在其他值(a[k])
//max = abs(q-p)
//如果不存在max max=-2
//如果max > 100000 max=-1
int GetNum(int a[], int n)
{
int i,j,t;
int *b = new int[n];
int max = -2;
bool flag = true;
for(i=0; i<n; i++)
{
b[i] = i;
}
for(i=0; i<n-1 && flag; i++)
{
flag = false;
for(j=0; j<n-1-i; j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
t = b[j];
b[j] = b[j+1];
b[j+1] = t;
flag = true;
}
}
}
for(i=0; i<n-1; i++)
{
if(b[i] < b[i+1])
{
t = a[i+1] - a[i];
t = t>0? t:(-1)*t;
if(t > 100000)
t = -1;
if(t > max)
max = t;
}
}
//debug
for(i=0; i<n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0; i<n; i++)
{
printf("%d ",b[i]);
}
delete []b;
return max;
}
数组元素限定条件下的最大距离
最新推荐文章于 2021-09-09 18:37:25 发布