Problem Statement
In a popular game, a ball is dropped from the top of a triangle of cells containing n rows. The ball keeps falling down row by row until it reaches the bottom of the triangle. In each row, the ball can fall either left or right. The first row contains one cell, the second contains two, and so on. The game looks like the following picture (where a cell is the space between two consecutive points in a row):

The rows are numbered from top to bottom starting from zero, and the cells in each row are numbered from left to right starting from zero. Note that row i will have i+1 cells numbered 0 to i, and if the ball is on cell k of row i, it will either fall left to cell k of row i+1, or right to cell k+1 of row i+1.
Given a
Definition
- Class:
- FallingBall
- Method:
- howMany
- Parameters:
- String[], int
- Returns:
- int
- Method signature:
- int howMany(String[] cells, int n)
- (be sure your method is public)
Constraints
- cells will have between 1 and 50 elements, inclusive.
- n will be between 1 and 30, inclusive.
- Each element of cells will be formatted "
", where | and
are each integers, with no extra leading zeros. | - Each
in cells will be between 0 and n-1, inclusive.
- In each element of cells,
will be between 0 and | , inclusive.
Examples
{"3 2","5 2"}
7
Returns: 6
This example is shown in the picture above. There are 3 ways to reach the cell (3,2), then only one way to reach the second cell (5,2), and two more ways of reaching the bottom. That gives a total of 6 ways of passing through the cells.
{"0 0","0 0"}
30
Returns: 536870912
All the possible paths pass through the cell (0,0).
{"0 0","29 0"}
30
Returns: 1
There is only one way to reach the bottom-right cell.
{"10 0","10 1"}
15
Returns: 0
Two different cells in the same row can never be touched in the same path.
{"0 0","4 0"}
5
Returns: 1
{"2 2"}
4
Returns: 2
{"13 7","7 5","19 11","19 11","14 7","11 6"}
21
Returns: 1680
{"16 11","5 4"}
18
Returns: 3300
{"5 3"}
6
Returns: 10
{"0 0","3 0"}
4
Returns: 1
{"0 0"}
3
Returns: 4
{"11 5","8 4","11 5","11 5","8 4","7 3"}
12
Returns: 105
{"12 9","11 8","10 8","6 6","11 8"}
13
Returns: 6
{"14 7","15 7"}
17
Returns: 6864
{"11 6","26 16","10 6","24 16","26 16"}
27
Returns: 60060
{"11 11","7 7","11 11","9 9","10 10","1 1","11 11"}
12
Returns: 1
{"3 0","13 4","12 3","12 3"}
17
Returns: 672
{"2 0","14 5","14 5","9 2","14 5","13 5"}
15
Returns: 84
{"3 1","4 1","2 0"}
5
Returns: 1
{"21 16","1 0","19 16","21 16","21 16","16 15"}
23
Returns: 6
{"6 4","25 14","23 14","13 9","9 7"}
26
Returns: 22680
{"15 6","15 6","15 6"}
16
Returns: 5005
{"12 0","14 2","16 2","16 2"}
17
Returns: 1
{"14 2","9 0"}
15
Returns: 10
{"21 7","20 6","11 4","21 7","1 0"}
22
Returns: 7560
{"0 0"}
10
Returns: 512
{"12 7","4 1","13 8","8 4","10 6","10 6","11 7"}
14
Returns: 16
{"1 1","13 11","1 1"}
15
Returns: 132
{"5 0","11 1","10 0"}
16
Returns: 16
{"7 1"}
16
Returns: 1792
{"5 5","6 6","6 6","5 5"}
7
Returns: 1
{"5 0","5 0","3 0","4 0"}
6
Returns: 1
{"13 3","6 1","11 2","14 3","12 2","10 2"}
15
Returns: 24
{"16 5","16 5","15 4"}
17
Returns: 1365
{"8 5","1 1"}
12
Returns: 280
{"15 10","6 5","6 5","13 8","13 8"}
16
Returns: 210
{"23 9","18 4","2 2"}
24
Returns: 120
{"22 16","23 16","11 8"}
24
Returns: 27225
{"11 7","6 6","6 6"}
29
Returns: 655360
{"1 1","0 0"}
2
Returns: 1
{"0 0"}
30
Returns: 536870912
{"12 9","19 9","19 9","18 9","18 9"}
20
Returns: 220
{"4 0","2 0","5 0"}
7
Returns: 2
{"21 17","21 17","21 17","21 17"}
22
Returns: 5985
{"16 4","22 6"}
23
Returns: 27300
{"4 0","4 0"}
16
Returns: 2048
{"1 1"}
5
Returns: 8
{"0 0"}
15
Returns: 16384
{"3 1","6 1","7 1","6 1","1 1","7 1","7 1","6 1"}
9
Returns: 2
{"23 16","23 16","22 16"}
24
Returns: 74613
{"27 4","27 4"}
29
Returns: 35100
{"1 1","0 0","0 0","0 0"}
2
Returns: 1
{"0 0"}
1
Returns: 1
{"16 16"}
20
Returns: 8
{"3 2","4 2"}
5
Returns: 3
{"22 13","15 9"}
23
Returns: 175175
{"0 0","3 1"}
4
Returns: 3
{"14 7","1 1","1 1","10 7"}
15
Returns: 84
{"8 3","28 9","28 9","27 8","27 8","29 10"}
30
Returns: 651168
{"16 9","16 9"}
17
Returns: 11440
{"14 13","16 13","14 13"}
23
Returns: 896
{"0 0","15 0"}
19
Returns: 8
{"10 6","17 13","13 9"}
21
Returns: 1680
{"13 0","16 0","13 0"}
17
Returns: 1
{"22 2","9 0"}
30
Returns: 9984
{"13 7","12 6"}
14
Returns: 924
{"20 5","22 6","21 6","23 7","23 7","22 6"}
26
Returns: 62016
{"0 0"}
8
Returns: 128
{"20 12","20 12","20 12","18 12","19 12","9 3","7 1"}
21
Returns: 7
{"19 17","3 3"}
25
Returns: 3840
{"7 0","7 0"}
8
Returns: 1
{"13 12","26 17"}
30
Returns: 133848
{"1 0"}
4
Returns: 4
{"9 5","17 9"}
18
Returns: 8820
{"13 8","13 8"}
16
Returns: 5148
{"0 0","0 0"}
3
Returns: 4
{"15 9","0 0"}
26
Returns: 5125120
{"2 2"}
3
Returns: 1
{"12 12","27 13","27 13","27 13","23 13"}
28
Returns: 11
{"2 1"}
4
Returns: 4
{"15 2","1 0"}
22
Returns: 5824
{"6 4","13 6"}
20
Returns: 20160
{"5 1","5 1"}
6
Returns: 5
{"1 0","2 0"}
3
Returns: 1
{"20 17","14 4","10 8","16 3","16 12","24 5","10 8","0 0","15 11","20 7","3 0","0 0","10 5","22 3","8 0","20 10","16 5"}
25
Returns: 0
{"6 1","6 4","2 1","5 1","0 0","2 0","6 1","2 2","1 0"}
7
Returns: 0
{"1 1","2 2","2 1","1 0","2 1"}
3
Returns: 0
{"24 1","19 0","1 1","18 2","2 0","24 5","16 0","10 4","9 5","24 5","19 18","1 1","17 3"}
29
Returns: 0
{"6 0","10 7","6 4","8 5","2 0","4 0","1 0","17 2","9 8","3 0","0 0","17 17","16 16","17 16","10 3","15 5","13 2","6 4","0 0","0 0","17 7","1 0","6 2","17 12","8 3","5 4","15 12","3 2","4 1","9 1","2 2","6 4","10 10","5 4","6 0","11 3","17 5","14 4","7 1","9 3","8 6","15 0","15 5","16 3","17 8"}
19
Returns: 0
{"15 11","27 17","26 13","20 3","3 2","18 11","6 0","26 6","9 5","15 9","13 2","26 2","19 13","11 8","9 3","14 5","7 4","6 2","17 11","27 23","3 0","1 0","3 1","7 0","7 4","9 7","7 1","12 1","10 7","8 4","23 18","27 6","11 11","0 0","13 10","25 24","13 1","20 9","26 10","28 10","22 14","15 1","9 6","1 0","16 13","14 13","5 1"}
29
Returns: 0
{"1 0","14 7","12 6","19 14","15 4","14 1","15 1","5 4"}
21
Returns: 0
{"13 9","9 2","0 0","2 2","18 9","2 0","15 10","1 0","14 8","10 10","3 3","15 13","8 5","17 17","3 2","7 4","0 0","16 14","17 6","1 0","7 5","11 9","5 5","12 10","2 2","12 0","15 11","11 10","18 17","1 1","12 8","10 10","0 0","15 2","14 0","10 4","7 3","16 12"}
19
Returns: 0
{"1 0","4 1","9 1","3 3","0 0","11 1","0 0","1 0","12 6","4 4","7 7","2 0","12 2","11 2","1 1","5 5","6 2","8 7","1 0","11 11","11 9","0 0","0 0","5 3","9 3","4 4","12 4"}
13
Returns: 0
{"1 0","2 2","0 0","5 3","1 1","5 4","2 1","1 0","5 5","3 1","1 1","6 2","4 2","4 1","3 3","5 1","2 2","4 0","2 1","1 0","6 5","3 3","4 0","5 0","0 0","5 1","2 1","3 2","4 3","1 1","1 0","2 0","5 0","0 0"}
7
Returns: 0
{"17 15","17 1","15 13","9 1","4 4","21 5","12 8","23 7","20 18","8 0","8 2","14 13","22 9","27 10","20 18","9 1","15 5","1 1","2 0","22 17","19 9","2 1","10 9","6 1","28 27","11 3","16 16","10 3","21 2","13 2","12 3","23 22","0 0"}
29
Returns: 0
{"19 14","22 11","11 4","23 3","2 1","19 11","2 2","15 8","15 0","22 2","7 0","16 7","0 0","12 5","13 3"}
25
Returns: 0
{"9 6","13 13","12 7","11 3","11 3","7 0"}
21
Returns: 0
{"9 9","7 1","0 0","28 18","26 11","15 14","22 1","8 6","3 3","2 1","19 10","27 15","1 1","5 0","29 1","18 8","1 1","26 19","3 1","10 8","14 10","24 15","24 7","18 12","6 5","23 16","17 17","14 9","6 5","29 8","19 13","18 18","22 5","27 21","1 1","5 1","23 15","15 15"}
30
Returns: 0
{"2 1","14 7","0 0","9 8","24 18","17 6","20 1","15 1","0 0","14 5","11 5","10 6","17 5","15 11","11 8","5 3","23 12","6 1","11 11","6 5","5 2","14 14","5 5","6 4","15 13","16 7","10 1","16 10","25 24","17 13","10 2","20 16","4 3","11 5","3 0","24 10","13 10","20 11","9 6","2 1"}
27
Returns: 0
{"5 2","4 4","4 3","7 2","8 6","2 1","4 2","4 2","6 4","4 4","6 1","8 3","0 0","7 0","5 5","5 5","3 3","1 0","8 0","2 2","4 2","6 5","7 1","2 2","2 2","8 6","8 2","5 2","0 0","4 4","6 3","2 1","5 1","6 4","0 0","2 1","0 0","6 1"}
9
Returns: 0
{"1 1","2 0","2 0","1 0","0 0","1 0","2 2"}
3
Returns: 0
{"5 0","7 7","2 2","24 11"}
25
Returns: 0
{"6 0","10 1","9 9","3 3","12 8","13 5","12 5","0 0","13 11","1 1","4 1","2 1","0 0","17 15","7 1","10 10","16 10","12 5","1 0","16 13","12 1","15 3","13 9","16 0","12 2","6 6","1 1","12 8","15 3","16 2","17 1","3 0","5 1","8 0","4 4","17 1","11 11","14 12","16 13","15 0","7 1","10 9","15 15","17 1","8 7","17 5"}
18
Returns: 0
{"1 1","4 1","0 0","0 0","3 3","1 1","3 2"}
6
Returns: 0
{"0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0"}
30
Returns: 536870912
{"0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0"}
1
Returns: 1
{"29 29"}
30
Returns: 1
{"29 0"}
30
Returns: 1
{"28 0"}
30
Returns: 2
{"28 28"}
30
Returns: 2
{"28 28","28 28"}
30
Returns: 2
{"10 0", "10 1" }
15
Returns: 0
{"0 0", "1 0", "3 1", "6 3", "10 5", "15 7", "21 10", "28 14", "3 1", "10 5", "28 14", "0 0", "15 7", "10 5" }
30
Returns: 504000
{"0 0", "29 0" }
30
Returns: 1
{"3 2", "5 0" }
7
Returns: 0
{"0 0", "21 12", "20 11", "21 12", "28 7" }
30
Returns: 0
{"1 1", "29 14" }
30
Returns: 37442160
{"10 0", "20 0", "15 3", "5 3", "3 2", "22 1", "5 3", "25 1" }
30
Returns: 0
{"0 0", "29 0", "2 2", "3 3" }
30
Returns: 0
{"0 0" }
30
Returns: 536870912
{"29 14" }
30
Returns: 77558760
{"1 1", "1 1" }
30
Returns: 268435456
{"0 0", "1 0", "2 0", "3 0", "4 0", "5 0", "6 0", "7 0", "8 0", "9 0", "10 0", "11 0", "12 0", "13 0" }
14
Returns: 1
{"0 0", "0 0", "20 10" }
30
Returns: 94595072
{"6 0", "3 0" }
30
Returns: 8388608
{"1 1", "2 2", "5 4", "6 3", "7 2", "15 2", "16 3", "25 5", "10 6", "13 4", "27 4" }
29
Returns: 0
{"10 1", "9 0", "0 0" }
30
Returns: 524288
{"29 15" }
30
Returns: 77558760
{"5 2", "8 3", "5 2" }
10
Returns: 60
{"10 1", "11 0" }
30
Returns: 0
{"29 1", "1 1" }
30
Returns: 1
{"0 0", "0 0" }
30
Returns: 536870912
{"5 2", "3 2" }
7
Returns: 6
{"10 1", "1 1", "2 1" }
30
Returns: 524288
{"0 0", "3 1", "4 2", "10 8", "10 9", "16 8" }
24
Returns: 0
{"1 0", "29 14" }
30
Returns: 40116600
{"29 2", "3 1" }
30
Returns: 78
{"29 15", "0 0" }
30
Returns: 77558760
{"29 0", "0 0" }
30
Returns: 1
{"0 0", "29 15" }
30
Returns: 77558760
{"5 1", "3 2", "6 4" }
8
Returns: 0
{"10 0", "2 0" }
20
Returns: 512
{"9 1", "11 1" }
20
Returns: 2304
{"0 0", "4 2" }
14
Returns: 3072
{"20 0", "10 10" }
30
Returns: 0
{"3 1", "5 2", "9 4", "8 4" }
11
Returns: 36
{"25 0", "26 1" }
30
Returns: 8
{"1 1", "0 0", "3 3", "2 2" }
10
Returns: 64
{"1 1", "0 0" }
30
Returns: 268435456
{"5 2", "0 0" }
7
Returns: 20
{"1 1", "1 1" }
2
Returns: 1
{"29 24", "29 24", "2 1" }
30
Returns: 35100
{"25 0", "26 1", "28 3" }
30
Returns: 2
{"0 0", "1 1", "29 14" }
30
Returns: 37442160
{"10 8", "11 8" }
13
Returns: 90
{"1 1", "1 1" }
7
Returns: 32
{"1 1", "2 0" }
20
Returns: 0
{"25 25", "25 25" }
30
Returns: 16
{"0 0", "20 10", "10 5", "5 3" }
30
Returns: 12902400
{"0 0", "1 0", "2 1", "3 1", "4 2", "5 2", "6 3" }
11
Returns: 16
{"0 0", "29 10", "2 2", "3 3", "5 5" }
30
Returns: 42504
{"2 2", "3 1", "4 1" }
5
Returns: 0
{"29 10" }
30
Returns: 20030010