-
algospot - asymtilingAlgorithm/알고스팟 2020. 2. 3. 19:2712345678910111213141516171819202122232425262728293031323334353637383940414243444546474849//algospot - asymtiling#include <iostream>#include <vector>using namespace std;#define MOD 1000000007int N;//cache[size] : size 크기만큼의 타일을 채울수 있는 경우의 수vector<int> cache;void init(){cin >> N;cache = vector<int>(N + 1, -1);}//dp[idx] = dp[idx-1] + dp[idx-2]//dp[1] = 1, dp[2] = 2int dp(int idx){if (idx == 1)return 1;else if (idx == 2)return 2;int &ret = cache[idx];if (ret != -1)return ret;ret = dp(idx - 1) + dp(idx - 2);ret %= MOD;return ret;}int main(){int C;cin >> C;for (int tn = 0; tn < C; ++tn){init();if (N == 2)cout << 0 << "\n";else if (N % 2)cout << (dp(N) - dp(N / 2) + MOD) % MOD << "\n";elsecout << (((dp(N) - dp(N / 2 - 1)+MOD) % MOD) - dp(N / 2) + MOD) % MOD << "\n";}}
cs https://www.algospot.com/judge/problem/read/ASYMTILING
algospot.com :: ASYMTILING
비대칭 타일링 문제 정보 문제 그림과 같이 2 * n 크기의 직사각형을 2 * 1 크기의 타일로 채우려고 합니다. 타일들은 서로 겹쳐서는 안 되고, 90도로 회전해서 쓸 수 있습니다. 단 이 타일링 방법은 좌우 대칭이어서는 안 됩니다. 위 그림은 2 * 5 크기의 직사각형을 채우는 비대칭 타일링 방법 6가지를 보여줍니다. 다음의 2가지는 좌우대칭이기 때문에 세지 않습니다. n 이 주어질 때 가능한 비대칭 타일링 방법의 수를 계산하는 프로그램을 작성하세요.
www.algospot.com
2xN 크기의 직사각형 채우는 경우의수 - 2xN 크기의 직사각형중 대칭인 경우의수
'Algorithm > 알고스팟' 카테고리의 다른 글
algospot - numb3rs (0) 2020.02.07 algospot - poly (0) 2020.02.07 algospot - tripathcnt (0) 2020.02.03 algospot - tiling2 (0) 2020.02.03 algospot - quantize (0) 2020.02.03