華為oj 尋找等差數列

2021-07-10 09:47:07 字數 1057 閱讀 4120

本題提供兩種解法:

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 的最大長度 那...