給定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個數,每個數的絕對值...