Adobe Interview Question
SDE1sCountry: India
#include<iostream>
using namespace std;
int main()
{
int arr[]={100,200,100,1,1};
int k=1900,n=2100;
int mood=0;
int m=4;
for(int i=0;i<m;i++)
{
if(k<2100)
{
k+=arr[i];
if(k>=2100)
mood++;
}
else
{
k-=arr[i];
if(k<2100)
{
mood++;
}
}
}
cout<<mood<<endl;
return(0);
}
#include <iostream>
using namespace std;
int main()
{
int shop[]={100,200,100,1,1};
int m = sizeof(shop)/sizeof(shop[0]);
int k=1900;
int n=2100;
int count=0;
bool happy;
if(k <= n)
happy = true;
else
happy = false;
for(int i=0; i<m; i++)
{
if(k<=n)
{
k += shop[i];
if(!happy)
{
happy = true;
count++;
}
}
else
{
if(k< shop[i])
k -= k;
else
k -= shop[i];
if(happy)
{
happy = false;
count ++;
}
}
}
cout << "numof mood swings = "<<count <<endl;
return 0;
}
Recursion:
- Laxmi Narsimha Rao Oruganti November 26, 2018- Recursion on Shops, Mood Change Count is an extra parameter
- In each recursion of a shop,
-- you do both sell and buy so that you can compute all the possible scenarios
-- In each buy/sell case, check if mood has changed, if so update the mood change count and pass on the updated mood count change to next level recursion
-- In each buy/sell case, push the activity on to stack (also have to pop once the control comes back to this level)
- Recursion ends when all shops are visited
-- When recursion ends, check total mood change count with that of stored count, if the new one is more, store that and also take copy stack of sales/buys