diff options
added sem 14
1 files changed, 42 insertions, 0 deletions
| -rw-r--r-- | Sem. 14/task6.cpp | 42 |
diff --git a/Sem. 14/task6.cpp b/Sem. 14/task6.cpp new file mode 100644 index 0000000..f389bcf --- /dev/null +++ b/Sem. 14/task6.cpp @@ -0,0 +1,42 @@ +#include <iostream> +using namespace std; + + + + +bool canBeCovered(int n, int m) +{ + if ((n == 0 && m >= 0) || (n>=0 && m==0)) //empty rectangle can be covered + return true; + + if (n < 0 || m < 0) //out of range + return false; + + if ((n == 1 && m == 2) || (n == 3 && m == 1)) //exactly one 1x2 or 3x1 + return true; + + if ((n == 1 && m == 1) || (n == 2 && m == 1)) // to swall for our plates + return false; + + + + //if the plate 2x1 stands in the top left corner + bool case1 = (m >=2 && canBeCovered(n - 1, 2) && canBeCovered(n, m - 2)) //try cut vertically + || (n>=1 && canBeCovered(n-1, m) && canBeCovered(1, m-2)); //try cut horizontaly + + if (case1) + return true; + + //if the plate 1x3 stands in the top left corner + bool case2 = (m >= 1 && canBeCovered(n - 3, 1) && canBeCovered(n, m - 1)) //try cut vertically + || (n>=3 && canBeCovered(3, m - 1) && canBeCovered(n - 3, m)); //try cut horizontaly + + return case2; +} +int main() +{ + int n, m; + + + cout << canBeCovered(4, 3); +}
\ No newline at end of file |
