最大乘积
输入n个元素组成的序列S,你需要找出一个最大乘积的连续子序列。如果不是正数,输出-1,表示无解。1=<n=<18,-10=<Si=<10。
样例输入:
3
2 4 -3
5
2 5 -1 2 -1
样例输出:
8
20
#include<stdio.h> int main() { int n; while(~scanf("%d",&n)) { int s[20]; for(int i=0;i<n;i++)scanf("%d",&s[i]); __int64 ji[400],max=-100000;int t=0; memset(ji,0,sizeof(ji)); for(i=0;i<n;i++) for(int j=i;j<n;j++){ ji[t]+=1; for(int k=i;k<=j;k++) ji[t]*=s[k]; max=max>ji[t]?max:ji[t]; t++; } if(max<0)max=-1; printf("%d\n",max); } return 0; }