最大乘积 简单枚举 暴力啊

输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列.如果这个最大的乘积不是正数,应输出-1(表示无解).1<=n<=18,-10<=Si<=10.

利用了求最长回文子串的思想::嘻嘻移花接木了

#include<iostream>
#include<stdio.h>
using namespace std;
void chengji(int n,int a[18])
{
 int i,j,k,s=1,max=0;
 for(i=0;i<n;i++)
  for(j=n-1;j>=i;j--)
  {
   s=1;
   for(k=i;k<=j;k++)
   {
    s=s*a[k];//开始写成了a[i],结果调试了半天也找不到错误,所以不可以粗心的。
   }
     if(max<s)max=s;
  }

   if(max>0)
    cout<<max<<endl;
   else cout<<'-1'<<endl;
}
int main()
{
 int n,i,a[18]={0};
 while(scanf("%d",&n)==1)
 {
  for(i=0;i<n;i++)
   cin>>a[i];
  chengji(i,a);
 }
 return 0;
}
View Code

 

posted on 2013-07-11 15:48  Forgiving  阅读(202)  评论(0编辑  收藏  举报