Maximun product
Given a sequence of integers S = {S1, S2, ..., Sn}, you shoulddetermine what is the value of the maximum positive product involving consecutive terms of S. Ifyou cannot find a positive sequence, you should consider 0 as the value of the maximum product.
Each test case starts with 1 ≤ N ≤ 18, the number of elements in a sequence. Each elementSi is an integer such that -10 ≤ Si ≤ 10. Next line will haveN integers, representing the value of each element in the sequence. There is a blank line aftereach test case. The input is terminated by end of file (EOF).
For each test case you must print the message: Case #M: The maximum product is P., where M isthe number of the test case, starting from 1, and P is the value of the maximum product. Aftereach test case you must print a blank line.
3 2 4 -3 5 2 5 -1 2 -1
Case #1: The maximum product is 8. Case #2: The maximum product is 20.
枚举每一个长度组合,不断更新最大值,不过要注意有可能18个数都是10,那么最大值是多少?int还存得下吗?
#include"iostream" #include"cstring" using namespace std; int main() { long long ans=-99999999; int ch,f; long long an=1; int a[20]; f=1; int n; while(cin>>n) { for(int i=0;i<n;i++) { cin>>ch; a[i]=ch; an*=ch; if(an>ans) { ans=an; } } for(int j=n-1;j>=0;j--) { an=1; for(int k=j;k>=0;k--) { an*=a[k]; if(an>ans) { ans=an; } } } if(ans<0) ans=0; cout<<"Case #"<<f++<<": The maximum product is "<<ans<<'.'<<endl; cout<<endl; ans=-99999999; an=1; } return 0; }