簡答題 加了思想的等差數列

2021-09-12 20:34:47 字數 723 閱讀 1514

如果乙個數列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

複製

possible
首先這個題目是網易的校招機試題,這個題目意思好理解,也不難,但是如果不靜下心來,可能迅速反映出來,今天狀態不錯,大概1分鐘就有了這個題目的思路。等差數列絕對是單調數列,那麼我只要排序之後,看前面三項的差是不是相等就可以了。**如下:

#includeusing namespace std;

int main()

sort(a,a+n);

if(n==2)

cout<<"possible"

return 0;

}

尋找最長的等差數列

問題描述 給定乙個大小為n的陣列,要求寫出乙個演算法,求出其最長的等差數列的子串行。首先問題並沒有要求要按照原來陣列的順序,所以可以先對該陣列排序。如果不要求該最長子序列中的元素是相鄰的話,可以用乙個簡單的dp來完成。令 f i j 表示以 i 為結尾的某子串行 該子串行的等差為 j 的最大長度 那...

尋找最長的等差數列

題目描述 description 給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過10000000.輸出描述 output descr...

牛牛的等差數列 線段樹

這裡的突破口在於小於等於25且大於等於3的質數連乘在1e8左右,所以,我們可以在操作上,將其看作對1e8去求模,而不是對每個都進行預處理。時間複雜度 include include include include include include include include include inc...