程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA 11059,uva11059

UVA 11059,uva11059

編輯:C++入門知識

UVA 11059,uva11059


Given a sequence of integers S = {S1, S2, . . . , Sn}, you should determine what is the value of the
maximum positive product involving consecutive terms of S. If you cannot find a positive sequence,
you should consider 0 as the value of the maximum product.


Input
Each test case starts with 1 ≤ N ≤ 18, the number of elements in a sequence. Each element Si
is
an integer such that −10 ≤ Si ≤ 10. Next line will have N integers, representing the value of each
element in the sequence. There is a blank line after each test case. The input is terminated by end of
file (EOF).


Output
For each test case you must print the message: ‘Case #M: The maximum product is P.’, where
M is the number of the test case, starting from 1, and P is the value of the maximum product. After
each test case you must print a blank line.


Sample Input
3
2 4 -3
5
2 5 -1 2 -1


Sample Output
Case #1: The maximum product is 8.
Case #2: The maximum product is 20.

 

題意:輸入n個元素組成的序列S,你需要找出一個乘積最大的連續子序列 。如果這個最大的乘積不是正數,就輸出0(表示無解)。 1<=n<=18   -10<=S<=10

輸出格式  每輸出一組案例就空一行(注意)

 

題目分析:連續子序列有兩個要素:起點和重點。所以只要枚舉起點和終點就好。由於每個元素與的最大值不會超過10,且不超過18個元素,最大乘積不會超過10的18次方。所以可以用long long儲存(試了一下,用int的話,輸出18個10的結果不對,int存不下)

 

 

代碼如下:(媽的,剛開始想到3重循環去了,還傻逼的循環了一個len表示子序列的長度,盡管試了很多案例都對了,就是不能過。重想了一下,抱著試一試的心態,寫了,然後TM就過了,也是RLGL.....)

 

 

 1 #include <stdio.h>
 2 int a[20];
 3 int main()
 4 {
 5     int n,N=0,c2=0;
 6     while(scanf("%d",&n)==1)
 7     {
 8         long long c,c2=0;
 9         ++N;
10         for(int i=0; i<n; i++)
11             scanf("%d",&a[i]);
12         for(int q=0;q<n;q++)
13         {
14             c=1;
15             for(int z=q;z<n;z++)
16             {
17                 c*=a[z];
18                 if(c>c2)
19                     c2=c;
20             }
21         }
22         if(c2<=0)
23             printf("Case #%d: The maximum product is 0.\n\n",N);
24         else
25             printf("Case #%d: The maximum product is %lld.\n\n",N,c2);
26     }
27     return 0;
28 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved