#include <stdio.h>
int main()
{
int n,i,j,x,y,a[150],b[150];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入数据
for(i=0;i<n;i++)
b[i]=i+1; //用b[]记下a[]数组各值的下标
for(i=1;i<n;i++) //冒泡排序
{
for(j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
x=a[j],y=b[j]; //交换值的时候,下表也跟着改变
a[j]=a[j+1],b[j]=b[j+1];//这点是关键 ,下标一定要跟着改变
a[j+1]=x,b[j+1]=y;
}
}
}
int p=0,m=0;
m=a[1]-a[0];
for(i=2;i<n;i++)
{
if(m==a[i]-a[i-1]) //如果是等差,p=1
p=1;
else //否则p=0
{
p=0;
break;
}
}
if(p==1) //是等差,输出下标
{
for(i=0;i<n;i++)
printf("%d ",b[i]);
}
else //不是等差,输出相邻差值的最大值与最小值
{
int max=a[1]-a[0],min=a[1]-a[0];
for(i=2;i<n;i++)
{
if(a[i]-a[i-1]>max)
max=a[i]-a[i-1];
if(a[i]-a[i-1]<min)
min=a[i]-a[i-1];
}
printf("%d %d",max,min);
}
return 0;
}
xdoj等差数列及位置指示
于 2023-12-20 19:04:00 首次发布