Skip to content

Commit 305ae08

Browse files
authored
feat: add swift implementation to lcof problem: No.60 (#2952)
1 parent c7758de commit 305ae08

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

lcof/面试题60. n个骰子的点数/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,39 @@ public class Solution {
227227
}
228228
```
229229

230+
#### Swift
231+
232+
```swift
233+
class Solution {
234+
func dicesProbability(_ n: Int) -> [Double] {
235+
var f = Array(repeating: Array(repeating: 0, count: 6 * n + 1), count: n + 1)
236+
for j in 1...6 {
237+
f[1][j] = 1
238+
}
239+
if n > 1 {
240+
for i in 2...n {
241+
for j in i...(6 * i) {
242+
for k in 1...6 {
243+
if j >= k {
244+
f[i][j] += f[i - 1][j - k]
245+
}
246+
}
247+
}
248+
}
249+
}
250+
var m = 1.0
251+
for _ in 0..<n {
252+
m *= 6.0
253+
}
254+
var ans = Array(repeating: 0.0, count: 5 * n + 1)
255+
for j in n...(6 * n) {
256+
ans[j - n] = Double(f[n][j]) / m
257+
}
258+
return ans
259+
}
260+
}
261+
```
262+
230263
<!-- tabs:end -->
231264

232265
<!-- solution:end -->
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
func dicesProbability(_ n: Int) -> [Double] {
3+
var f = Array(repeating: Array(repeating: 0, count: 6 * n + 1), count: n + 1)
4+
for j in 1...6 {
5+
f[1][j] = 1
6+
}
7+
if n > 1 {
8+
for i in 2...n {
9+
for j in i...(6 * i) {
10+
for k in 1...6 {
11+
if j >= k {
12+
f[i][j] += f[i - 1][j - k]
13+
}
14+
}
15+
}
16+
}
17+
}
18+
var m = 1.0
19+
for _ in 0..<n {
20+
m *= 6.0
21+
}
22+
var ans = Array(repeating: 0.0, count: 5 * n + 1)
23+
for j in n...(6 * n) {
24+
ans[j - n] = Double(f[n][j]) / m
25+
}
26+
return ans
27+
}
28+
}

0 commit comments

Comments
 (0)