(18). 8.6 SUBARRAYS CHALLENGES (Questions asked by top MNC's) - anishsingh90/Data_Structure_And_Algorithm_In_Cpp_github.io GitHub Wiki
//SUBARRAY QUESTION #include using namespace std;
int main(){ int n; cout << "Enter the size of array: "; cin >> n;
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
for(int k=i; k<=j; k++){
cout << arr[k] << " ";
}
cout << endl;
}
}
return 0;
}
/* OUTPUT: Enter the size of array: 4 1 4 2 7 1 1 4 1 4 2 1 4 2 7 4 4 2 4 2 7 2 2 7 7 */
//MAXIMUM SUBARRAY SUM #include #include using namespace std;
int main(){ int n; cout << "Enter the size of array: "; cin >> n;
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
int maxSum = INT_MIN;
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
int sum=0;
for(int k=i; k<=j; k++){
sum += arr[k];
}
maxSum = max(maxSum,sum);
}
}
cout <<"maxSum of subarray: "<<maxSum << endl;
return 0;
}
/* OUTPUT: Enter the size of array: 4 -1 4 7 2 maxSum of subarray: 13 */
//MAXIMUM SUBARRAY BY COMULATIVE APPROACH #include #include using namespace std;
int main(){ int n; cout << "Enter the size of array: "; cin >> n;
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
int currsum[n+1];
currsum[0]=0;
for(int i=1; i<n; i++){
currsum[i] = currsum[i-1] + arr[i-1];
}
int maxSum =INT_MIN;
for(int i=1; i<n; i++){
int sum = 0;
for(int j=0; j<i; j++){
sum = currsum[i] - currsum[j];
maxSum = max(sum, maxSum);
}
}
cout <<"maxSum: " <<maxSum;
return 0;
}
/* OUTPUT: Enter the size of array: 4 -1 4 2 7 maxSum: 6 */
//KADANE'S ALGORITHM #include #include using namespace std;
int main(){ int n; cout << "Enter the size of array: "; cin >> n;
int arr[n];
for(int i=0; i<=n; i++){
cin >> arr[i];
}
int currentSum = 0;
int maxSum = INT_MIN;
for(int i=0; i<=n; i++){
currentSum = arr[i];
if(currentSum<0){
currentSum = 0;
}
maxSum = max(maxSum,currentSum);
}
cout << "maxSum : " << maxSum << endl; return 0; }
/* OUTPUT: Enter the size of array: 5 -1 4 -5 7 3 2 maxSum : 7 */
//MAXIMUM CIRCULAR SUBARRAY SUM #include using namespace std;
int kadane(int arr[] , int n){ int currentsum = 0; int maxsum = INT_MIN; for(int i=0; i<n; i++){ currentsum += arr[i]; if(currentsum < 0){ currentsum = 0; } maxsum = max(maxsum,currentsum); } return maxsum; }
int main(){ int n; cout << "Enter the size of array: "; cin >> n;
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
int wrapsum;
int nonwrapsum;
nonwrapsum = kadane(arr,n);
int totalsum=0;
for(int i=0; i<n; i++){
totalsum += arr[i];
arr[i] =-arr[i];
}
wrapsum = totalsum + kadane(arr,n);
cout <<"maximum circular subarray: "<<max(wrapsum,nonwrapsum) << endl;
return 0;
}
/* OUTPUT: Enter the size of array: 7 4 -4 6 -6 10 -11 12 maximum circular subarray: 22 */
//PAIR SUM PROBLEM #include using namespace std;
bool pairsum(int arr[] , int n , int k){ for(int i=0; i<n-1; i++){ for(int j=i+1; j<n; j++){ if(arr[i] + arr[j]==k){ cout << i << " " << j << endl; return true; } } } return false; }
int main(){ int arr[] = {2,4,7,11,14,16,20,21}; int k=31; cout << pairsum(arr,8,k) <<" "; return 0; }
/* OUTPUT: 3 6 1 */