Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 14 / task3.cpp
diff options
context:
space:
mode:
1 files changed, 35 insertions, 0 deletions
-rw-r--r--Sem. 14/task3.cpp35
diff --git a/Sem. 14/task3.cpp b/Sem. 14/task3.cpp
new file mode 100644
index 0000000..5df4d01
--- /dev/null
+++ b/Sem. 14/task3.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+using namespace std;
+
+bool checkIfPathExists(const int* field, bool* visited, int len, int pos)
+{
+ if (pos < 0 || pos >= len || visited[pos]) //out of bounds
+ return false;
+ if (pos == len - 1)
+ return true;
+
+ visited[pos] = true;
+
+ int value = field[pos];
+
+ return checkIfPathExists(field, visited, len, pos - value) || checkIfPathExists(field, visited, len, pos + value);
+
+}
+
+int main()
+{
+ int n;
+ cin >> n; //големината на масива.
+ int* field = new int[n];
+ bool* visited = new bool[n];
+
+ for (int i = 0; i < n; i++)
+ {
+ cin >> field[i];
+ visited[i] = false;
+ }
+
+ cout << checkIfPathExists(field, visited, n, 0);
+
+ delete[] field, visited;
+}