2013-04-15 67 views
2

我發現在你被賦予此型序列的問題的第N項:查找C++中的序列

你有

the first K terms : a1, a2, ... , ak; 
      K coefficients : b1, b2, ... , bk 

和復發:

S(i) = b1*S(i-K) + b2*S(i-K+1) + ... + bk*S(i-1). 

我必須找出第N項。

我相信這個問題可以用快速矩陣求冪來解決,但我很難發現我必須使用的矩陣。我試圖用C++編寫問題。任何人都可以給我一些關於如何處理這類問題的提示?

+0

這是至少可能的這些種類的序列的子集。也就是說,可以找到第n個斐波那契數[使用矩陣](http://en.wikipedia.org/wiki/Fibonacci_number#Matrix_form)。但是,我不知道它有多普遍。 – Kevin

回答

1

作爲一個無恥的自我推銷,我編碼了a program to solve linear recurrences using matrix multiplication。文件頂部的註釋描述了你想要形成的矩陣,以及如何使用重複平方算法來有效地計算遞歸的第n項。

希望這會有所幫助!

+0

非常感謝您的回答......我有一個問題,儘管matrix.hh是您創建的或者您可以在互聯網上找到的圖書館? –

+0

@ user2128547-這是我創建的圖書館。它可以在這裏在線獲得:http://keithschwarz.com/interesting/code/?dir=matrix – templatetypedef