## Adobe Interview Question

SDE1s**Country:**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