1.题目描述:点击打开链接
2.解题思路:本题利用暴力搜索解决,由于n,S的范围都比较小,直接利用三重循环枚举。又最大可能乘积不会超过10^18,因此结果用long long保存。注意枚举的时候起点和终点可以重合。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; typedef long long ll; #define N 20 int a[N]; int n; int main() { //freopen("t.txt", "r", stdin); int rnd = 0; while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) scanf("%d", a + i); ll ans = 0, res; for (int start = 0; start < n;start++) for (int end = start; end < n;end++) { res = 1; for (int k = start; k <= end; k++) res *= a[k]; ans = max(ans, res); } printf("Case #%d: The maximum product is %lld.\n\n", ++rnd,ans); } return 0; }
时间: 2024-10-10 04:14:38