File tree 3 files changed +103
-0
lines changed
lcci/08.01.Three Steps Problem
3 files changed +103
-0
lines changed Original file line number Diff line number Diff line change @@ -92,6 +92,27 @@ var waysToStep = function (n) {
92
92
};
93
93
```
94
94
95
+ ### ** C**
96
+
97
+ ``` c
98
+ int waysToStep (int n)
99
+ {
100
+ if (n < 3)
101
+ {
102
+ return n;
103
+ }
104
+ int a = 1, b = 2, c = 4, i = 4;
105
+ while (i++ <= n)
106
+ {
107
+ int t = ((a + b) % 1000000007 + c) % 1000000007;
108
+ a = b;
109
+ b = c;
110
+ c = t;
111
+ }
112
+ return c;
113
+ }
114
+ ```
115
+
95
116
### **C++**
96
117
97
118
```cpp
@@ -113,4 +134,26 @@ public:
113
134
};
114
135
```
115
136
137
+ ### ** Rust**
138
+
139
+ ``` rust
140
+ impl Solution {
141
+ pub fn ways_to_step (n : i32 ) -> i32 {
142
+ let mut dp = [1 , 2 , 4 ];
143
+ let n = n as usize ;
144
+ if n <= 3 {
145
+ return dp [n - 1 ];
146
+ }
147
+ for _ in 3 .. n {
148
+ dp = [
149
+ dp [1 ],
150
+ dp [2 ],
151
+ (((dp [0 ] + dp [1 ]) % 1000000007 ) + dp [2 ]) % 1000000007 ,
152
+ ];
153
+ }
154
+ dp [2 ]
155
+ }
156
+ }
157
+ ```
158
+
116
159
<!-- tabs:end -->
Original file line number Diff line number Diff line change @@ -86,6 +86,27 @@ var waysToStep = function (n) {
86
86
};
87
87
```
88
88
89
+ ### ** C**
90
+
91
+ ``` c
92
+ int waysToStep (int n)
93
+ {
94
+ if (n < 3)
95
+ {
96
+ return n;
97
+ }
98
+ int a = 1, b = 2, c = 4, i = 4;
99
+ while (i++ <= n)
100
+ {
101
+ int t = ((a + b) % 1000000007 + c) % 1000000007;
102
+ a = b;
103
+ b = c;
104
+ c = t;
105
+ }
106
+ return c;
107
+ }
108
+ ```
109
+
89
110
### **C++**
90
111
91
112
```cpp
@@ -107,4 +128,26 @@ public:
107
128
};
108
129
```
109
130
131
+ ### ** Rust**
132
+
133
+ ``` rust
134
+ impl Solution {
135
+ pub fn ways_to_step (n : i32 ) -> i32 {
136
+ let mut dp = [1 , 2 , 4 ];
137
+ let n = n as usize ;
138
+ if n <= 3 {
139
+ return dp [n - 1 ];
140
+ }
141
+ for _ in 3 .. n {
142
+ dp = [
143
+ dp [1 ],
144
+ dp [2 ],
145
+ (((dp [0 ] + dp [1 ]) % 1000000007 ) + dp [2 ]) % 1000000007 ,
146
+ ];
147
+ }
148
+ dp [2 ]
149
+ }
150
+ }
151
+ ```
152
+
110
153
<!-- tabs:end -->
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn ways_to_step ( n : i32 ) -> i32 {
3
+ let mut dp = [ 1 , 2 , 4 ] ;
4
+ let n = n as usize ;
5
+ if n <= 3 {
6
+ return dp[ n - 1 ] ;
7
+ }
8
+ for _ in 3 ..n {
9
+ dp = [
10
+ dp[ 1 ] ,
11
+ dp[ 2 ] ,
12
+ ( ( ( dp[ 0 ] + dp[ 1 ] ) % 1000000007 ) + dp[ 2 ] ) % 1000000007 ,
13
+ ] ;
14
+ }
15
+ dp[ 2 ]
16
+ }
17
+ }
You can’t perform that action at this time.
0 commit comments