Computer >> Máy Tính >  >> Lập trình >> Lập trình

Đếm cách để đến cầu thang thứ n


Có n cầu thang. Một người sẽ đi đến cầu thang thứ 1 đến cầu thang thứ n. Tối đa bao nhiêu cầu thang mà anh ấy / cô ấy có thể băng qua trong một bước cũng được đưa ra. Với thông tin này, chúng tôi phải tìm cách khả thi để đi đến cầu thang thứ n.

Chúng ta hãy xem xét một người có thể băng qua tối đa hai cầu thang trong mỗi bước. Vì vậy, chúng ta có thể tìm quan hệ đệ quy để giải quyết vấn đề này. Người ta có thể di chuyển đến cầu thang thứ n, hoặc từ cầu thang thứ (n-1) 'hoặc từ cầu thang thứ (n-2)'. Vì vậy, cách (n) =cách (n-1) + cách (n-2).

Đầu vào và Đầu ra

 Đầu vào:Số lượng cầu thang, giả sử 10 số cầu thang tối đa có thể nhảy trong một bước, giả sử 2 Đầu ra:Nhập số cầu thang:10 Vào cầu thang tối đa mà một người có thể leo:2 Số cách để tới:89  

Thuật toán

airsClimpWays (cầu thang, tối đa) 

Đầu vào - số lượng cầu thang, số lần nhảy cầu thang tối đa trong một bước duy nhất.

Đầu ra - Số cách có thể để tiếp cận.

 Bắt đầu xác định số lượng mảng có kích thước giống như số lượng cầu thang [0]:=1 count [0]:=1 đối với i:=2 đối với cầu thang -1, thực hiện đếm [i]:=0 đối với j =1 đối với i và j <=max; đếm xong [i]:=count [i] + count [i - j] xong trả lại đếm [cầu thang - 1] Kết thúc 

Ví dụ

 #include  using namespace std; int ladClimbWays (intairs, int max) {int count [bridge]; // điền vào cầu thang kết quả bằng cách sử dụng cách đếm từ dưới lên [0] =1; // khi có 0 hoặc 1 bậc thang, 1 cách leo lên count [1] =1; for (int i =2; i > cầu thang; cout <<"Vào cầu thang tối đa một người có thể leo:"; cin>> tối đa; cout <<"Số cách tiếp cận:" < 

Đầu ra

 Nhập số cầu thang:10 Vào cầu thang tối đa mà một người có thể leo:2 Số cách để đạt:89