说实话,这不是自己写的。
十几次debug就忍不住百度了下算法。
和自己开始写的很接近,可我解决不了在不增加时间复杂度的基础上判断负数temp加上下一个数变为正,看了别人的伪码,我想复杂了。
这确实是一道面试题。叹。
#include<iostream> #include<time.h> #define random(x) (rand()%x) using namespace std; void main() { srand((int)time(0)); int a[100]; int i,n; int temp=0,sum=0; cout<<"几个数?"<<endl; cin>>n; for(i=0;i<n;i++) a[i]=random(20)-10; for(i=0;i<n;i++) cout<<a[i]<<" "; for(i=0;i<n;i++) { if(temp>0) { temp+=a[i]; } else { temp=a[i]; } if(temp>sum) sum=temp; } cout<<endl<<sum<<endl; }
时间记录日志表:
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3.20 | 17:00 | 21:30 | 30min | 4 | 编程 | 课上已构思 |
3.23 | 10:20 | 10.55 | 0 | 35min | 整理 |
周活动总结表:
日期/任务 | 听课 | 编程 | 阅读课本 | 课外活动 | 日总结 |
周日 | 0 | 0 | 200 | 200 | |
周一 | 200 | 0 | 0 | 120 | 320 |
周二 | 400 | 0 | 0 | 535 | |
周三 | 100 | 0 | 240 | 340 | |
周四 | 300 | 30 | 0 | 330 | |
周五 | 300 | 240 | 0 | 100 | 400 |
周六 | 0 | 0 | 120 | 120 | |
周总结 | 1300 | 270 | 0 | 780 | 2350 |
缺陷记录日志:
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3.20 | 1 | 20 | 编码 | 编译 | 120min | temp变为正的最后一个正数 |