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