思路:
wa了好多发,总结一下需要注意的点:
1:n最大为18,si为10,所以最大值为1018需要使用longlong,最后输出时要记得printf (%lld),否则h会炸。
2:一个数也算,不一定需要两个或以上的乘积
3:如果最大乘积是负数,输出0
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>
typedef long long ll;
using namespace std;
int main()
{
ll n,cnt=0;
while(cin>>n)
{
ll a[20],ans=0;
cnt++;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++)
{
ll sum=a[i];
for(int j=i+1;j<n;j++)
{
ans=max(ans,sum); //一个数可能是最大的情况
sum*=a[j];
}
ans=max(ans,sum); //比较最后sum的值
}
printf("Case #%d: The maximum product is %lld.\n\n",cnt,ans<0?0:ans);
//lld输出
}
return 0;
}