File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(6^3 * n)
2
+ // Space: O(6^2)
3
+
4
+ // dp
5
+ class Solution {
6
+ public:
7
+ int distinctSequences (int n) {
8
+ static const int MOD = 1e9 + 7 ;
9
+ if (n == 1 ) {
10
+ return 6 ;
11
+ }
12
+ vector<vector<int >> dp (6 , vector<int >(6 ));
13
+ for (int i = 0 ; i < 6 ; ++i) {
14
+ for (int j = 0 ; j < 6 ; ++j) {
15
+ if (i != j && gcd (i + 1 , j + 1 ) == 1 ) {
16
+ dp[i][j] = 1 ;
17
+ }
18
+ }
19
+ }
20
+ for (int _ = 0 ; _ < n - 2 ; ++_) {
21
+ vector<vector<int >> new_dp (6 , vector<int >(6 ));
22
+ for (int i = 0 ; i < 6 ; ++i) {
23
+ for (int j = 0 ; j < 6 ; ++j) {
24
+ if (!dp[i][j]) {
25
+ continue ;
26
+ }
27
+ for (int k = 0 ; k < 6 ; ++k) {
28
+ if (!dp[j][k]) {
29
+ continue ;
30
+ }
31
+ if (k != i) {
32
+ new_dp[i][j] = (new_dp[i][j] + dp[j][k]) % MOD;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ dp = move (new_dp);
38
+ }
39
+ int result = 0 ;
40
+ for (int i = 0 ; i < 6 ; ++i) {
41
+ for (int j = 0 ; j < 6 ; ++j) {
42
+ result = (result + dp[i][j]) % MOD;
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+ };
You can’t perform that action at this time.
0 commit comments