牛客题解 | 等差数列_1
题目
题解
难度:简单
知识点:排序 数学逻辑
思路:
1.首先将n个元素存放在动态数组x中,对其进行从小到大排序。
2.通过x[1]-x[0]计算出d,采用for循环判断动态数组中两个相邻的数的差x[i]-x[i-1]与d是否相同:若不相等即不能构成等差数列,无需对之后的数进行判断,提前退出循环。
3.怎么判断是否提前退出循环?
定义flat变量,在进入循环之前赋值为1,在循环过程中,若出现x[i]-x[i-1]与d不相等,将flat赋值为0,然后通过break退出循环。
4.在循环之后,判断flat值,若为1输出:Possible,若为0输出:Impossible。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int> x;
int n,a;
cin>>n;
for(int i=0;i<n;i++){ cin>>a;
x.push_back(a);
}
sort(x.begin(),x.end());
int d=x[1]-x[0];
int flat=1;
for(int i=2;i</n;i++){></int></algorithm></vector></iostream>

浙公网安备 33010602011771号