diff options
1 files changed, 35 insertions, 0 deletions
| -rw-r--r-- | Sem. 14/task3.cpp | 35 |
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; +} |
