等差数列
发布时间
阅读量:
阅读量
注:主要改动说明
输入由两部分组成,第一行为整数n,表示数列的长度(其中2 ≤ n ≤ 50)。第二行为x[1]至x[n],表示每个位置上的数值(其中每个数值满足条件: 0 ≤ x[i] ≤ 1000)。
输出描述:
如果可以变成等差数列输出”Possible”,否则输出”Impossible”。
示例1
输入
3
3 1 2
输出
Possible
首先执行排序操作,并随后进行等差数列的判断。(自己编写的快速排序算法被用来进行排序操作,并且仅正确率80%,运行效率较低。随后调用sort函数以加快速度,并因此感到些许沮丧。)
#include<iostream>
#include<algorithm>
using namespace std;
bool judgeList (int list[] , int num);
void quickSort(int list[] , int r , int l);
int main(){
int num;
cin>>num;
int list[num];
for(int i = 0 ; i < num ; i++){
cin>>list[i];
}
//quickSort(list , 0 , num-1);
sort(list,list+num);
if(judgeList(list , num)){
cout<<"Possible";
}else{
cout<<"Impossible";
}
return 0;
}
void quickSort(int list[] , int r , int l){
if (r < l){
int i = r , j = l , x= list[r] ,z;
while(i<j){
while(i<j && list[i]<x)
i++;
z = list[i];
while(i<j && list[j]>x)
j--;
list[i] = list[j];
list[j] = z;
}
quickSort(list , r , i-1);
quickSort(list , i+1 ,l);
}
}
bool judgeList (int list[] , int num){
if(num <= 1) return true;
int d = list[1] - list[0];
for(int i=1 ; i<num ;i++){
if(list[i] != list[i-1] + d){
return false;
}
}
return true;
}
全部评论 (0)
还没有任何评论哟~
