//2015新年快乐
题目链接:OJ【3100】动态规划?
题意:一个一维数组,存储了n个正整数,下标依次为0,1,2,….,n-1。输出以st,st+5,st+5*2,st+5*3,...,st+5*n为下标的数列和的最大值
分析:神马动规 神马跟神马 全被题名给坑了 标准最大子序列和问题的翻版 虽然考试的时候思路跟着题目走了。。。 当时也想到用最大子序列和的方法 当时这部分掌握得不算好 没试 就少了次AC的机会 要不就超过高数(王xx)了(跑偏了……) 之后写了遍最大子序列和交上去A了 对最大子序列和的求法算是刻骨铭心了 附最大子序列和思路:出现0/<0的情况就归零 找出和最大的情况(略简- -b
上代码:
#include
using namespace std;
int num[100000];
int n;
int su(int st)//找最大子序列和
{
int sum=num[st],k=0;
int i;
for(i=st;i
sum) sum=k;
}
return sum;
}
int main()
{
ios::sync_with_stdio(false);
int i,sum;
int MAX;
while(cin>>n)
{
for(i=0;i
>num[i];
MAX=su(0);
for(i=1;i
<5;i++)//数组间隔为5 故找5次 同时注意n<5时的边界情况 寻找最大和
{
sum=su(i);
if(sum>MAX) MAX=sum;
}
cout<
<