我有这两个问题 - 我相信有一个问题已经发布 - 但是没有答案。 我想我已经正确回答了第二个......
有什么建议吗?
计算f(n),每个程序所需的单位时间操作的确切数量 输入大小n的函数
(i) for i<-1 to n do
for j<-1 to 2n-i do
//a unit cost operation
------------------------------ (i) this is i the one i need some help on.
(ii) for i <-1 to n do
for j <- 2 to (n+i) do
// a unit cost operation
for i: 1 to n do:
for j: 2 to n + i do:
unit
现在,让我们说n = 1
i=1; j: 2 to 2 = 1 times
total: 1 units
n=2
i=1; j: 2 to 3 = 2 times
i=2; j: 2 to 4 = 3 times
total: 2 + 3 = 5 units
n=3
i=1; j: 2 to 4 = 4 times
i=2; j: 2 to 5 = 5 times
i=3; j: 2 to 6 = 6 times
total: 4 + 5 + 6 = 10 units
Pattern being f(n) = n^2 +1 , is that right?
答案 0 :(得分:1)
对于您提到的案例(案例(i)),您可以使用Arithmetic Progressions
在这种情况下,作为第一项= 2 * n-1,最后一项是n,所以所有术语的总和是
S = N / 2 *(N + 2 * N-1)= O(N ^ 2)
对于案例II,第一项=(n + 1-1)= n且最后一项=(n + n-1)=(2 * n-1),因此Sum,S等于,
S = n / 2(第一项+最后一项)= n / 2 *(n + 2 * n-1)= O(n ^ 2)
您必须观察到(i)和&amp; (ii)是相同的。