pta上c语言运行超时怎么解决,PTA测试题- 最大子列问题(C语言)

原题目:

3c5002542240a2ae82480b44a691c9ab.png

原本是不会的,不过CSDN上的大神的blog给了我启发。先上代码:

#include 

int main()

{

int i,n,max = 0,Max = 0,t;

scanf("%d",&n);

for(i = 0;i

scanf("%d",&t);

max += t;

if(max>Max)

Max = max;

if(max<0)

max = 0;

}

printf("%d",Max);

return 0;

}

由于初学这种类型的题,在如何接收以空格分割的输入上很发愁(轻喷)。后来发现,直接for循环scanf就可以了= =,根本不用计算空格。。

在接收输入的内容后,原本想存入数组,再对数组进行计算,后来发现这样肯定超时,而且超时很久。。

这段算法的原理就是在输入的过程中直接将每次输入的时候,将求和结果存入临时变量max中,如果max<0,将max归零,这样避免了加入第一个负数。如果max>Max,将max赋值给Max。这样保证了Max最大。

运行结果:

710b30e3a10470bfbe1dbcc0f99c43e7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值