众所周知,沫沫酱以火锅为生。。在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)
我的程序:
#include <stdio.h>
int pleasant(int n)
{
int max=0;/*最大愉快度, 初始值0*/
int index=0;
int i;
for (i=0;i<n;i++)
{
int si;
scanf("%d",&si);
if(index<0)
{
index=0;
}
index+=si;
if(index>max)
{
max=index;
}
}
return max;
}
int main(int argc, char const *argv[])
{
int t;
scanf("%d", &t);
while (t--)
{
int n;
scanf("%d",&n);
printf("%d\n",pleasant(n));
}
return 0;
}
有一个测试用例过不了但是不知道是什么,求大神帮忙看看,或者再给我一个程序,不要太复杂,我刚学C语言2个月而已。
有两个用例通不过哦,不过不知道是什么,一个是结果错误,一个是运行时间超出限值
追答我不敢保证运行时间是否超时,但相信结果是对的。你把例子发上来。
追问他没有把例子写出来。。。我的代码也是那个例子错误。。估计是个特殊值
追答如果想降低时耗,可把函数pleasant()的功能放在main()函数中进行,可以省掉函数调用的时间,但收效甚微,耗时主要发生在三重循环中,但这是不能少的,因为没有给出可选菜品个数,所以只能从每次选一个、两个、.....、n个。
本回答被提问者和网友采纳