Advertisement
add1ctus

Плочки

Jan 28th, 2016
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.57 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     int N, i;           //Број на плочки
  8.     int DP[1000][4];    //Матрица за динамичко, каде што DP[X][Y] означува на колку начини се поставаат X+1 плочки
  9.     int result = 0;     //така што Y е последната изберена боја, каде што Y =
  10.                         //0 за бела боја
  11.                         //1 за црвена
  12.                         //2 за жолта
  13.                         //3 за сина
  14.     scanf("%d",&N);
  15.     //Има само еден начин да се избере една плочка во една боја
  16.     DP[0][0] = DP[0][1] = DP[0][2] = DP[0][3] = 1;
  17.  
  18.     for(i = 1 ; i < N ; ++i)
  19.     {
  20.         DP[i][0] = DP[i-1][0] + DP[i-1][1] + DP[i-1][2] + DP[i-1][3];//Белата плочка можеме да ја додадеме на било која друга
  21.         DP[i][1] = DP[i-1][0] + DP[i-1][2] + DP[i-1][3];//Останатите плочки ги додаваме само доколку последната додадена не е со иста боја
  22.         DP[i][2] = DP[i-1][0] + DP[i-1][1] + DP[i-1][3];
  23.         DP[i][3] = DP[i-1][0] + DP[i-1][1] + DP[i-1][2];
  24.     }
  25.     //Решението се наоѓа во последната колона, кога се наредени N плочки со било која боја на крај
  26.     result = DP[N-1][0] + DP[N-1][1] + DP[N-1][2] + DP[N-1][3];
  27.  
  28.     printf("%d",result);
  29.  
  30.     return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement