Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 14 / task6.cpp
diff options
context:
space:
mode:
Commit44adf9d35e7e1b8075514b716e95c0fed6bdbe52 (patch)
Author
 Angeld55 <angel_dimitriev@abv.bg>
2021-01-09 16:19:28 +0200
Committer
 Angeld55 <angel_dimitriev@abv.bg>
2021-01-09 16:19:28 +0200
Filesd27e89c56fe213e82e7c990167224ec10f74c541 /Sem. 14/task6.cpp
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.tar
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.tar.gz
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.zip
Parenta69b56e59ae0e7862c75d0ee014029e56ff5298a (diff)
added sem 14
1 files changed, 42 insertions, 0 deletions
-rw-r--r--Sem. 14/task6.cpp42
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