判断一个给定的乱序数组是否是等差数列,如果是则输入“possible”,否则输出“impossible”。
分析:
首先数组是乱序的,需要对数组进行排序,然后通过等差数组的特性,比较相邻两个元素之间的差值是否相同,判断该数组是否是等差数列。排序可以通过调用STL库函数sort进行排序。
问题:
1、sort函数的使用;
2、可以使用容器存放输入数据,也可以使用数组。
附上C++代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
if(n<=1)
{
cout<<"Possible"<<endl;
return 0;
}
sort(a,a+n);
int tmp=a[1]-a[0];
for(int j=2;j<n;j++)
{
if((a[j]-a[j-1])!=tmp)
{
cout<<"Impossible"<<endl;
return 0;
}
}
cout<<"Possible"<<endl;
return 0;
}
python实现:
问题:
1、输入的格式;
2、如果输入n小于3,会出现什么情况?
3、需要将数组的输入转换为列表格式。
附上python代码:
def equalDiff(A):
A.sort()
d=A[1]-A[0]
for i in range(len(A)-1):
if A[i]!=A[i+1]-d:
return 'Impossible'
return 'Possible'
n=int(input())
A=list(map(int,input().split(' ')))
print(equalDiff(A))