題目描述:https://vjudge.net/problem/UVA-11059
暴力求解類問題
連續子序列有兩個要素:起點和終點,因此只需枚舉起點和終點即可。由於每個元素的絕對值不超過10且不超過18個元素,最大可能的乘積不會超過10 18 ,可以用long long存儲。
今天發現VJ上有一個特別好用的功能:
在UDEBUG界面裏不光有各個oj平臺這道題的測試數據,還可以幫你快速定位你的代碼和AC代碼的不同之處。真是太好用了,有了這個,以後找bug就容易多了。
#include<iostream>
#include<limits>
#include<sstream>
using namespace std;
string s="";
long long v;
int count=0;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[n+1];
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
long long max=0;
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
int k=i;
long long m=1;
while(k<=j){
m*=a[k];
k++;
}
if(max < m)
{
max=m;
}
}
}
ostringstream oss;
oss<<"Case #"<<++count<<": The maximum product is "<<max<<".\n\n";
s+=oss.str();
}
cout<<s;
}