C语言题求解啊,,,完全没思路TT

众所周知,沫沫酱以火锅为生。。在E8的聚餐活动中,他经常卖萌卖无辜领着大家吃火锅。。
有一天,沫沫听说学校附近的哺呷哺呷在某现充的赞助下有一个优惠活动,只需30软妹币,对个客人,它会上N道菜,但是客人只能挑选其中连续上的一些菜。
于是他非常兴奋的拉着灰灰和渣渣去吃火锅去啦。

沫沫是一个十分挑食的人,所以他对每一道菜都有一个愉快度(当然因为他的挑食,某些事物的愉快度会是负数)。
为了让沫沫能非常愉快的享受这次聚餐,善解人意的灰灰和渣渣决定帮他计算,他们应该怎么选择菜才能使沫沫最开心地吃完这次聚餐。

输入:
第一行是一个整数T,(T <= 10)表示测试案例的个数
对于每个测试案例,第一行是一个整数N,( 1<=N <= 10000)表示菜的个数
接下来的N个数字,第i个数字si表示沫沫对第i道菜的愉快度。( -1000 <=si <= 1000)

PS:由于CF又被血虐掉rating,所以沫沫的起始愉快度是0
PPS:沫沫完全可能得到一个为负值的愉快值, poor 沫沫。。
输出:
对于每个样例,输出一个数字,表示沫沫吃完之后愉快度的最大值。

HINT:
对于 5
6 -1 5 4 -7
我们选择6, -1, 5, 4这四道菜(注意必须是连续的,所以不能跳过-1)

。。这题明显是基础贪心。。

。。你学了几年的编程。。

以下给出思路:

因为他可选择的是连续的,所以可以得到贪心策略:f[i]=max(f[i-1],0)+a[i],其中f[i]表示从第1道菜到第i道菜所获得的最大愉快度。注意:别以为这是DP,它其实就是贪心!因为这题的普遍无后效性,所以贪心也可以对。

如果想要具体程序,请继续追问。

追问

我才学一个半月TT。。。求具体讲解

追答

#include
int main()
{
int t,n,s,x,ans;

while(t--)

{

cin>>n;

s=0;

for(int i=1;i>x;

if(sans)

ans=s;

}

cout<<ans;

}

return 0;

}

温馨提示:答案为网友推荐,仅供参考
相似回答