Table of Contents (top down ↓)
I give various methods of solving this problem
Explanation and Notes
Suppose we have been given an array of certain number of elements. And we have to print subsequences from a starting index to an ending index.
We will use two variables for the two markers: the first will be for the start of a subsequence, and the second for the end.
In the programs below, the variable i
has been used as the first or starting marker, and the variable j
as the ending marker.
The variable i
increments from 0 to end of the array.
To understand the operation consider that i
is currently placed at, say, index 2. The variable j
will start incrementing from index 2. So we will have the values of i and j like so: (i = 2, j = 2), (i = 2, j = 3), (i = 2, j = 4), and so on. Thus, i
and j
represent the bounds of various subsequences starting at index 2.
A for-loop of k
prints the array between i
and j
!
Please watch the video solution given below for more detail.
Method 1
(using vectors in C++)
Following program uses a vector to hold the elements of the array. If you are not conversant with vectors, then refer to Method 2 next.
// program to print all subsequences // of an array #include <iostream> #include <vector> using namespace std; int main() { std::vector<int> vec = { 4, 0, -7 }; // start marker for (unsigned i = 0; i < vec.size(); i++) { // end marker for (unsigned j = i; j < vec.size(); j++) { // print from start to end inclusive for (unsigned k = i; k <= j; k++) { cout << vec[k] << "; "; } cout << endl; } } return 0; }
Method 2
(using arrays in C++)
This program is exactly same as the one given in method 1 above, except that it uses a char array.
// program to print all subsequences // of an array #include <iostream> using namespace std; int main() { int arr[] = { 5, -1, 0, 8, 7, -2 }; // number of elements in the array const int SIZE = sizeof(arr) / sizeof(*arr); // start marker for (int i = 0; i < SIZE; i++) { // end marker for (int j = i; j < SIZE; j++) { // print the array from i to j for (int k = i; k <= j; k++) { cout << arr[k] << "; "; } cout << endl; } } return 0; }
Comments and Discussion
Leave your comments on the youtube comments box.
Method 3
(not recommended, but works)
This method is neither more efficient, nor systematic. But I have included here because this was written during one of my attempts. I didn't want to throw it away.
// program to print all subsequencies // of an array #include <iostream> using namespace std; int main() { int arr[] = { 5, -1, 0, 8, 7, -2 }; // number of elements in the array const int SIZE = sizeof(arr) / sizeof(*arr); for (int i = 0; i < SIZE; i++) { for (int j = 1; j <= (SIZE - i); j++) { for (int k = 0; k < j; k++) { cout << arr[i + k] << "; "; } cout << endl; } } return 0; }
This Blog Post/Article "(solved)C++ program to print all the contiguous (continuous) subsequences of an array" by Parveen is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.