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

Đếm các cách có thể để xây dựng các tòa nhà


Ở đâ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.