啥叫暴力呢,我就是暴力...
感谢zj(180度鞠躬)
暴力的思想有时候似乎蛮管用 就是这种最值啊可能有幺蛾子啊的题目
(正面拔毛-详见我错了很多次那个)
注意一下数据要用long long
*****小技巧****
01 这种题啊看极限 啊
比如这个只能有个位数,然后都是9试一次,结果18个超值了吧(sum也要用long long)
再比如最小,除了最小值是0以外,可以最小到其他地方长度,比如前面都很小(sum)最后来了个4.按照老算法是不行的
原来最开始的sum=1可以是可以但是只是看相乘,忽略了本身的情况
本身!就是自己,各个地方都可以取小试一试
j=i那里卡了一下.. 直接从自己开始就可以了啊
02 输出格式问题关注一下... 0 的时候特判也要都试试,别因为wa不要钱就先扔上去...
另外,可以不要k和sort,直接每次记住最大值就好..我是被wa了十几次那个题吓怕了
#include<iostream>
#include<string>
#include<algorithm>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
int m = 0;
int n; while (cin >> n){
m++;
long long a[18];
int k = 0;
long long cnt[500];
for (int i = 0; i<n; i++)cin >> a[i]; //how many are there
for (int i = 0; i<n; i++)
{
long long sum = 1;//***** ..... a[i];/// **** +1
for (int j = i ; j<n; j++)
{
sum *= a[j];
cnt[k] = sum;
k++;
}
}
//long long count=(n*(n-1))/2; //..
sort(cnt, cnt + k);
if (cnt[k - 1] <= 0)cout << "Case #" << m << ": The maximum product is " << 0 << "." << endl << endl;
else
cout << "Case #"<<m<<": The maximum product is "<<cnt[k - 1] <<"."<< endl<<endl;
}
return 0;
}