Đệ Quy #2

Bộ đề bài

1. Davis' Staircase

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Davis có một số cầu thang trong nhà và cậu thích leo mỗi lần 1, 2 hoặc 3 bậc. Davis muốn biết có bao nhiêu cách khác nhau để đi lên đến đỉnh cầu thang.

Cho chiều cao của từng cầu thang trong số s cầu thang trong nhà, hãy tìm và in ra số cách Davis có thể leo mỗi cầu thang, lấy phần dư cho 10^10 + 7, mỗi kết quả trên một dòng.

Ví dụ

Với n = 5.

Cầu thang có 5 bậc. Davis có thể bước theo các cách sau:

1 1 1 1 1
1 1 1 2
1 1 2 1
1 2 1 1
2 1 1 1
1 2 2
2 2 1
2 1 2
1 1 3
1 3 1
3 1 1
2 3
3 2

13 cách để Davis đi hết 5 bậc và:

13 modulo 10000000007 = 13

Function Description

Hoàn thành hàm stepPerms bằng cách sử dụng đệ quy.

Hàm stepPerms có tham số:

  • int n: số bậc của cầu thang.

Returns

  • int: số cách Davis có thể leo cầu thang, modulo 10000000007.

Input Format

  • Dòng đầu tiên chứa một số nguyên s, là số cầu thang trong nhà.
  • Mỗi dòng trong s dòng tiếp theo chứa một số nguyên n, là chiều cao của cầu thang thứ i.

2. Climbing Stairs

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn đang leo một cầu thang. Cần n bậc để lên đến đỉnh.

Mỗi lần bạn có thể leo 1 hoặc 2 bậc. Hỏi có bao nhiêu cách khác nhau để bạn có thể leo đến đỉnh?

Ví dụ

Input Output Giải thích
n = 2 2 Có hai cách để lên đến đỉnh:
1. 1 bậc + 1 bậc
2. 2 bậc
n = 3 3 Có ba cách để lên đến đỉnh:
1. 1 bậc + 1 bậc + 1 bậc
2. 1 bậc + 2 bậc
3. 2 bậc + 1 bậc

Ràng buộc

  • 1 ≤ n ≤ 45

3. Min Cost Climbing Stairs

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng số nguyên cost, trong đó cost[i] là chi phí của bậc thứ i trên cầu thang.

Sau khi trả chi phí của một bậc, bạn có thể leo lên 1 hoặc 2 bậc.

Bạn có thể bắt đầu từ bậc có chỉ số 0 hoặc bậc có chỉ số 1.

Hãy trả về chi phí nhỏ nhất để lên đến đỉnh cầu thang.

Ví dụ

Input Output Giải thích
cost = [10,15,20] 15 Bắt đầu tại chỉ số 1.
Trả 15 và leo 2 bậc để đến đỉnh.
Tổng chi phí là 15.
cost = [1,100,1,1,1,100,1,1,100,1] 6 Bắt đầu tại chỉ số 0.
Trả 1 và leo 2 bậc đến chỉ số 2.
Trả 1 và leo 2 bậc đến chỉ số 4.
Trả 1 và leo 2 bậc đến chỉ số 6.
Trả 1 và leo 1 bậc đến chỉ số 7.
Trả 1 và leo 2 bậc đến chỉ số 9.
Trả 1 và leo 1 bậc để đến đỉnh.
Tổng chi phí là 6.

Ràng buộc

  • 2 ≤ cost.length ≤ 1000
  • 0 ≤ cost[i] ≤ 999

4. House Robber

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn là một tên trộm chuyên nghiệp đang lên kế hoạch trộm tiền từ các ngôi nhà dọc theo một con phố.

Mỗi ngôi nhà có một số tiền nhất định. Ràng buộc duy nhất khiến bạn không thể trộm tất cả các ngôi nhà là các ngôi nhà liền kề có hệ thống an ninh kết nối với nhau và hệ thống sẽ tự động báo cảnh sát nếu hai ngôi nhà liền kề bị đột nhập trong cùng một đêm.

Cho một mảng số nguyên nums biểu diễn số tiền trong mỗi ngôi nhà, hãy trả về số tiền lớn nhất có thể lấy được trong đêm mà không làm hệ thống báo cảnh sát.

Ví dụ

Input Output Giải thích
nums = [1,2,3,1] 4 Trộm nhà 1 (1) và sau đó trộm nhà 3 (3).
Tổng số tiền = 1 + 3 = 4.
nums = [2,7,9,3,1] 12 Trộm nhà 1 (2), nhà 3 (9) và nhà 5 (1).
Tổng số tiền = 2 + 9 + 1 = 12.

Ràng buộc

  • 1 ≤ nums.length ≤ 100
  • 0 ≤ nums[i] ≤ 400

5. Triangle

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng triangle, hãy trả về tổng đường đi nhỏ nhất từ đỉnh xuống đáy.

Ở mỗi bước, bạn có thể đi đến một số liền kề ở hàng bên dưới.

Cụ thể hơn, nếu đang ở chỉ số i của hàng hiện tại, bạn có thể di chuyển đến chỉ số i hoặc i + 1 ở hàng tiếp theo.

Ví dụ

Input Output Giải thích
triangle = [[2],[3,4],[6,5,7],[4,1,8,3]] 11 Tam giác:
2
3 4
6 5 7
4 1 8 3
Tổng đường đi nhỏ nhất từ trên xuống dưới là 2 + 3 + 5 + 1 = 11.
triangle = [[-10]] -10

Ràng buộc

  • 1 ≤ triangle.length ≤ 200
  • triangle[0].length = 1
  • triangle[i].length = triangle[i - 1].length + 1
  • -10^4 ≤ triangle[i][j] ≤ 10^4

6. Decode Ways

Điểm: 10 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn đã chặn được một thông điệp bí mật được mã hóa dưới dạng một chuỗi các chữ số. Thông điệp được giải mã theo quy tắc:

"1" → 'A'

"2" → 'B'

...

"25" → 'Y'

"26" → 'Z'

Tuy nhiên, khi giải mã thông điệp, bạn nhận ra rằng có nhiều cách khác nhau để giải mã vì một số mã có thể nằm trong các mã khác, chẳng hạn "2""5" trong "25".

Ví dụ, "11106" có thể được giải mã thành:

  • "AAJF" với cách nhóm (1, 1, 10, 6)
  • "KJF" với cách nhóm (11, 10, 6)
  • Cách nhóm (1, 11, 06) không hợp lệ vì "06" không phải là một mã hợp lệ (chỉ "6" mới hợp lệ).

Lưu ý: Có thể tồn tại những chuỗi không thể giải mã.

Cho một chuỗi s chỉ chứa các chữ số, hãy trả về số cách giải mã chuỗi đó. Nếu toàn bộ chuỗi không thể được giải mã theo bất kỳ cách hợp lệ nào, trả về 0.

Các bộ test được tạo sao cho đáp án nằm trong phạm vi số nguyên 32-bit.

Ví dụ 1

Input Output Giải thích
s = "12" 2 "12" có thể được giải mã thành "AB" (1 2) hoặc "L" (12).