1. 程式人生 > >[編程題] 等差數列 網易2018

[編程題] 等差數列 網易2018

裏的 nbsp 所有 負數 例子 spa 否則 cnblogs using

如果一個數列S滿足對於所有的合法的i,都有S[i + 1] = S[i] + d, 這裏的d也可以是負數和零,我們就稱數列S為等差數列。
小易現在有一個長度為n的數列x,小易想把x變為一個等差數列。小易允許在數列上做交換任意兩個位置的數值的操作,並且交換操作允許交換多次。但是有些數列通過交換還是不能變成等差數列,小易需要判別一個數列是否能通過交換操作變成等差數列

輸入描述:
輸入包括兩行,第一行包含整數n(2 ≤ n ≤ 50),即數列的長度。
第二行n個元素x[i](0 ≤ x[i] ≤ 1000),即數列中的每個整數。



輸出描述:
如果可以變成等差數列輸出"Possible",否則輸出"Impossible"。

輸入例子1:
3
3 1 2

輸出例子1:
Possible

解題思路:先排序後判斷
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    int a[1000];
    cin>>n;
    int m;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    
    sort(a,a+n);
    for(m=1;m<n-1;m++)
    {
        
if(a[m]*2!=a[m-1]+a[m+1]) { cout<<"Impossible"; break; } } if(m==n-1) cout<<"Possible"; }

[編程題] 等差數列 網易2018