Skip to content

Commit 1a8fa2a

Browse files
committed
added dynamic algorithm for binomial coeffecients
1 parent c976db1 commit 1a8fa2a

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
func main() {
9+
myArrayOfK := [4]int{5, 6, 7, 8}
10+
var x int
11+
12+
fmt.Println("\nBinomial Coefficient Using Dynamic Programming:", bin2(50, 5))
13+
for _, element := range myArrayOfK {
14+
start := time.Now()
15+
x = bin2(50, element)
16+
elapsed := time.Since(start)
17+
fmt.Println("bin2 (50,", element, ") = ", x, " took ", elapsed)
18+
19+
}
20+
21+
}
22+
23+
func bin2(n int, k int) int {
24+
var i, j int
25+
B := make([][]int, (n + 1))
26+
for i := range B {
27+
B[i] = make([]int, k+1)
28+
}
29+
30+
for i = 0; i <= n; i++ {
31+
for j = 0; j <= min(i, k); j++ {
32+
if j == 0 || j == i {
33+
B[i][j] = 1
34+
} else {
35+
B[i][j] = B[i-1][j-1] + B[i-1][j]
36+
}
37+
}
38+
}
39+
return B[n][k]
40+
}
41+
42+
func min(a, b int) int {
43+
if a < b {
44+
return a
45+
}
46+
return b
47+
}

0 commit comments

Comments
 (0)