本文主要是介绍浙大PAT (Advanced Level) Practise 1007,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*此题求最大连续子序列,可以用动态规划的方法,用变量先记录遍历到数组的最大和及i和j,一直遍历,
并与当前最大子序列和比较。如果大于当前最大子序列和,则置换之,否则,重新开始,直至遍历完数组。*/
#include <iostream>
using namespace std;int main()
{int K;while(cin>>K){int jilu=-1,sum=0,first=0,last=0,start=0,end=0,mark=0;int n[10005];for(int i=0;i<K;++i){cin>>n[i];if(n[i]>=0)mark=1;sum+=n[i];if(sum>jilu) //如果sum大于当前子序列和,置换之{end=i;jilu=sum;first=start;last=end;}if(sum<0) //如果sum小于0了,重现开始{start=i+1;sum=0;}}if(mark==0) //如果全小于0,按题意输出cout<<0<<' '<<n[0]<<' '<<n[K-1]<<endl;else //否则,输出最大子序列 cout<<jilu<<' '<<n[first]<<' '<<n[last]<<endl;}return 0;
}
这篇关于浙大PAT (Advanced Level) Practise 1007的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!