本題提供兩種解法:
1.找到首尾之間的所有的素數形成乙個陣列prime,那麼這個陣列形成的等差數列中,公差最大的的就是這個數列首尾數字的差值,對公差從1到最大值進行迴圈,找到數列中公差等於上述範圍的所有數列,找到數列包含數字最多的就可以了,時間複雜度o(kn^2)。
#includeusing namespace std;
int prime[200];
int count = 0;
void getprime(int m, int n)
for (int j = 2; j*j <= i; j++)
}if (!flag)
else
}}int main()
getprime(start, end);
if (count>1)
else if (count == 1)
else
temp = prime[count - 1] - prime[0];
for (int k = 1; k <= temp; k++)
}if (max
#includeusing namespace std;
int getprime(int start, int end, int *nums)
for (i = start; i <= end; i++)
}if (i> start >> end;
max = -1;
size = getprime(start, end, nums);
//動態規劃
for (i = 1; i= 0; j--)
else if (dp[i][diff] == max)
}} }
//輸出
p = nums[end];
for (int k = max; k >= 0; k--)
return 0;
}
結論:動態規劃還需要多練多思考!!! 華為oj初級 尋找等差數列
詳細描述 介面說明 原型 public static int getmaxarray int m,int n 輸入引數 int m 給定的區間下限 int n 給定的區間上限 返回值 等差數列 限制 0 m n 舉例 在區間 0,10 中,素數構成的最大等差數列為3,5,7 知識點 陣列 執行時間限...
華為oj 等差數列
問題描述 功能 等差數列 2,5,8,11,14。輸入 正整數n 0 輸出 求等差數列前n項和 返回 轉換成功返回 0 非法輸入與異常返回 1 知識點 函式 練習階段 初級 執行時間限制 10sec 記憶體限制 128mbyte 輸入 輸入乙個正整數。輸出 輸出乙個相加後的整數。樣例輸入 2 樣例輸...
尋找最長的等差數列
問題描述 給定乙個大小為n的陣列,要求寫出乙個演算法,求出其最長的等差數列的子串行。首先問題並沒有要求要按照原來陣列的順序,所以可以先對該陣列排序。如果不要求該最長子序列中的元素是相鄰的話,可以用乙個簡單的dp來完成。令 f i j 表示以 i 為結尾的某子串行 該子串行的等差為 j 的最大長度 那...