Sam最初有k
个苹果。然后他访问了m
个商店。给出了包含m个值的数组arr
。在每个商店,他要么购买或出售arr[i]
个苹果。如果他没有足够的苹果可以出售,那么他就卖掉他所有的东西。如果Sam具有< N
,则给出k
。 N苹果他很伤心别的开心。每当他有> N个苹果,他总是卖arr [i]苹果数量。我们必须在每个商店出售或购买,以使他的情绪波动次数最多。
m
,N
,m
和 #include<iostream>
using namespace std;
void fun(int *arr, int m , int l, int count, int &max, int k , int N)
{
if(l == m)
{
if(count > max)
max = count;
}
else
{
char state;
if(k > N)
state = 'h';
else
state = 's';
char newstate;
int prevk = k;
if(k < N)
{
k+=arr[l];
if(k > N)
newstate = 'h';
else newstate = 's';
if(state != newstate)
fun(arr,m,l+1,count+1,max,k,N);
else fun(arr,m,l+1,count,max,k,N);
}
k = prevk;
k-= arr[l];
if(k < 0)
k = 0;
if(k > N)
newstate = 'h';
else newstate = 's';
if(state != newstate)
fun(arr,m,l+1,count+1,max,k,N);
else fun(arr,m,l+1,count,max,k,N);
k = prevk;
}
}
int main()
{
int k,m,n;
cin >> k >> m >> n;
int *arr = new int [m];
for(int i=0;i<m;i++)
cin >> arr[i];
int max = 0;
fun(arr,m,0,0,max,k,n);
cout << max << endl;
}
整数。
每当他有&gt; N苹果他总是会卖掉但是当他有&lt; = N时,他可以出售或购买那么多苹果。我们不能说当他有&= N个苹果时,购买会使他的情绪波动最大化。
我运行了一个递归代码,但它给出了Timed out错误,我无法想到任何其他方法。有帮助吗?这是我的递归代码。
{{1}}