乙個數學公式求解的優化

2022-05-29 11:45:12 字數 1045 閱讀 7391

今天學長給了一道演算法優化題讓我做了一下,感覺還是比較有意思的~

題目是這樣:

給定乙個長度為n的陣列i,乙個數c,按下面的公式求出給定的矩陣ii:

分析: 

①.按公式求.

o( (n-c)*c^2 ),這樣固然簡單,但是如果給定n=2000,c=1000呢?

②.利用遞推關係加速.

觀察式子發現,ii(k,j)和ii(k-1,j-1)很相似,我們把他們展開看:

ii(k,j) = ic-k * ic-j + ic+1-k * ic+1-j + …… + in-1-k * in-1-j

ii(k-1, j-1) = ic+1-k * ic+1-j + …… + in-1-k * in-1-j + in-k * in-j

於是我們得到ii(k,j) = ii(k-1, j-1) - in-k * in-j + ic-k * ic-j

這樣我們只有按公式求出k=0和j=0的元素,剩下的用上面的遞推公式求就可以了,複雜度o(c*n + c^2)

暫時只想到這個優化……歡迎大牛補充~~~

#include #include #include #include #include using namespace std;

const int maxn = 400;

typedef struct matrix_calculationm_c;

void matrix_calculation::input_data_path()

void matrix_calculation::read_data()

return ;

}void matrix_calculation::calculate_matrix_ii()

for (int k = 0; k <= c; k ++)

for (int k = 0; k <= c; k ++)

}return ;

}void matrix_calculation::print_matrix_ii()

return ;

}int main()

由乙個數學公式想到的

數學往往會給我們驚喜,因為它的神奇可以揭示世界上的真理。上面的公式是排列組合學裡的乙個公式,這裡不打算討論它的推導過程或是數學意義,而是要試圖從社會學的角度來理解這個公式的現實意義。公式表徵的可以被對應到選舉制度,從r個人中選出k個人,左右兩個式子表示兩種不同的選舉方式 層級遞選制和內定式。公式的左...

由乙個數學公式想到的

數學往往會給我們驚喜,因為它的神奇可以揭示世界上的真理。上面的公式是排列組合學裡的乙個公式,這裡不打算討論它的推導過程或是數學意義,而是要試圖從社會學的角度來理解這個公式的現實意義。公式表徵的可以被對應到選舉制度,從r個人中選出k個人,左右兩個式子表示兩種不同的選舉方式 層級遞選制和內定式。公式的左...

利用數學公式求解乙個正整數的平方根

當大家需要在c語言程式設計中實現求解乙個數的平方根的時候,大家最容易想到的方法是載入標頭檔案,利用這個函式庫中的sqrt 函式來得出結果。那麼有沒有可能不呼叫庫函式就能計算平方根呢?其實我們可以運用一些數學知識,我們可以將數學的運算哦,我們可以通過程式設計計算,省去複雜的計算過程。include i...