Ở đây đưa ra n số phần, trong mỗi phần, có hai bên đường để xây dựng các tòa nhà. Nếu cần có một không gian trống giữa hai ngôi nhà thì có bao nhiêu cách có thể để xây dựng các tòa nhà trong lô đất.
Có bốn khả năng để xây dựng các tòa nhà
- Một bên đường
- Một phía khác của con đường
- Không có tòa nhà nào có thể được xây dựng
- Cả hai bên đường
Đầu vào và Đầu ra
Input: It takes the number of sections to construct buildings. Say the input is 3. Output: Enter Number of sections: 3 Buildings can be constructed in 25 different ways.
Thuật toán
constructionWays(n)
Đầu vào: Có n số phần.
Đầu ra - Số cách khả thi.
Begin if n = 1, then return 4 countEnd := 1 countEndSpace := 1 for i := 2 to n, do prevCountEnd := countEnd prevCountEndSpace := countEndSpace countEndSpace := countEnd + prevCountEndSpace countEnd := prevCountEndSpace done answer := countEndSpace + countEnd return answer^2 End
Ví dụ
#include<iostream> using namespace std; int constructionWays(int n) { if (n == 1) //if there is one section return 4; //4 possible ways to construct building in that section //set counting values for place at the end and end with space int countEnd=1, countEndSpace=1, prevCountEnd, prevCountEndSpace; for (int i=2; i<=n; i++) { //fot the second section to nth section prevCountEnd = countEnd; prevCountEndSpace = countEndSpace; countEndSpace = countEnd + prevCountEndSpace; countEnd = prevCountEndSpace; } //possible ways to end with space and building at the end int answer = countEndSpace + countEnd; return (answer*answer); //for two sides the answer will be squared } int main() { int n; cout << "Enter Number of sections: "; cin >> n; cout << "Buildings can be constructed in " << constructionWays(n) <<" different ways." ; }
Đầu ra
Enter Number of sections: 3 Buildings can be constructed in 25 different ways.