codevs p1006 等差數列

2021-07-23 00:14:33 字數 700 閱讀 7853

給定n(1<=n<=100)個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.

第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值不超過10000000.

對於每個輸入資料,輸出你所找出的最長等差數列的長度

7 3

8 4

5 6 2 2

大多數人第一眼看到這個題都會先想到從小到大排序,然後dp,但是公差太大會炸掉(雖然還是有好多神犇用dp並且a掉了,不過我太水了),然後發現n只有100,所以我們考慮用暴力一點的辦法搞它。從小到大排序後列舉答案等差數列的起點及公差,然後從1到n掃一遍。列舉公差時注意,因為公差可能很大,但n很小,所以我們可以在列舉到首項為a[i]時,把a[j]-a[i](j>i)當作公差。

#include

#include

#include

#include

using

namespace

std;

int dp[150][150];

int a[150], b[150], sum[150];

int n;

int main()

ans = max(ans, num);

}printf("%d", ans+1);

return

0;}

CODE VS 1006 等差數列

題目 題解 1006 等差數列 include define debug define maxsize 100 int n 資料大小 intarray maxsize 所有數值 int maxcount 最大計數 int darray maxsize 差值陣列 交換陣列位置 void swap in...

codevs 1006 等差數列

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

codevs 1006 等差數列

時間限制 1 s 空間限制 128000 kb 題目等級 gold description 給定n 1 n 100 個數,從中找出盡可能多的數使得他們能夠組成乙個等差數列.求最長的等差數列的長度.輸入描述 input description 第一行是乙個整數n,接下來一行包括了n個數,每個數的絕對值...