我試圖用回溯來解決這個問題,但我不確定算法的複雜性(如果算法是正確的)以及什麼是複雜度更高的算法。複雜的回溯算法
鑑於2個的正整數n和m,我們把合法整數的序列,如果:
- 的序列的長度爲n
- 序列中的元素是1且m
- 之間在位置i的元素的序列的,1 <我< = n時,是元件的位置中的除數I-1
計數法定序列的數目。預計該算法的複雜度爲O(平方米+納米)
這是我在C算法:
// n length of the sequence
// m maximum valid number
// l number of remaining positions in the sequence
// p previous number in the sequence
int legal(int n, int m, int l, int p) {
if (l == 0)
return 1;
int q=0;
for (int i=1; i <= m;i++) {
if (p%i == 0 || l == n)
q += legal(n,m,l-1,i);
}
return q;
}
int main() {
int n, m;
scanf("%d", &n);
scanf("%d", &m);
printf("%d\n", legal(n,m,n,0));
}
我覺得我的算法的複雜度爲O(NMS(N))與S(N) =合法序列號
一個算法的代碼或僞代碼應該包含明智的名字或者一個關於什麼字母意味着什麼的字典。評論也非常有用。你發表的是對所有讀者和可能的答覆者的徹底的無禮。請添加解釋。 – Gangnus