求最短的等差數列

題目:給出一個不排序的等差數據,且等差數據只是完整等差數據的一部分

輸入格式:
第一行 輸入數字N
第二行 輸入N個數字

輸出 :
最短等差數列的個數
樣例輸入:
5
2 6 4 10 20
樣例輸出:
10

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int m;
    cin>>m;
    int f[m];
    for (int i = 0; i < m; ++i) {
        cin>>f[i];
    }
    sort(f,f+m);
    int min=f[1]-f[0],min1,count1;
    for (int j = 1; j < m; ++j) {
        min1=f[j]-f[j-1];
        if(min1<min)
            min=min1;
    }
    //cout<<f[m-1]-f[0]<<endl;
   // cout<<min<<endl;
    if((f[m-1]-f[0])%min==0){
        count1=(f[m-1]-f[0])/min+1;
    }
    else{
        count1=f[m-1]-f[0]+1;
    }
    cout<<count1;
    return 0;
}

博主只憑自己的理解寫的,若錯勿噴。謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章