题目描述:
每个人的时间长河里面,都有几个重要的关键时间点,以数字的形式呈现在长河之中,当每个人的这些数字都聚集在一起的时候,就汇聚成了一条庞大的时间之流。
而你们的任务就是在这满是时间数字的流之中,选定部分时间数字相乘,并使其乘积最终的结果最大。
注意:时间数字之中可能会出现负数及0,他们代表一些人想要忘却的时间点。
由于时间的严谨,所有时间数字已经按照从小到大顺序升序排列。
输入格式:
第一行输入数N,表示有N个时间数字
第二行输入N个整数。
输出格式:
输出仅一行,即最大的乘积。
样例输入:
4 1 2 3 4
样例输出:
24
提示:
样例解释:
由于四个数都是正数,故其最大的乘积即四个数相乘,1*2*3*4=24.
1<=n<=100
保证最终的结果在long long范围内。
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a[1001],s1=1,s=0,flag=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]<0){
s=i;
}if(a[i]>0){
s1=s1*a[i];
flag++;
}
}
if(n==1){
cout<<a[0];
return 0;
}
/*if(n==2){
if(a[1]==0){
cout<<0;
return 0;
}
} */
for(int i=0;i<s;i+=2){
s1*=a[i]*a[i+1];
flag++;
}
if(flag==0){
cout<<0;
}else{
cout<<s1;
}
return 0;
}