日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu4561 连续最大积

發布時間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu4561 连续最大积 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:


連續最大積
Time Limit: 3000/1000 MS (Java/Others) ? ?Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1354 ? ?Accepted Submission(s): 458




Problem Description
小明和他的好朋友小西在玩一個游戲,由電腦隨機生成一個由-2,0,2三個數組成的數組,并且約定,誰先算出這個數組中某一段連續元素的積的最大值,就算誰贏!


比如我們有如下隨機數組:
2 2 0 -2 0 2 2 -2 -2 0?
在這個數組的眾多連續子序列中,2 2 -2 -2這個連續子序列的積為最大。


現在小明請你幫忙算出這個最大值。?
?


Input
第一行輸入一個正整數T,表示總共有T組數據(T <= 200)。
接下來的T組數據,每組數據第一行輸入N,表示數組的元素總個數(1<= N <= 10000)。
再接下來輸入N個由0,-2,2組成的元素,元素之間用空格分開。
?


Output
對于每組數據,先輸出Case數。
如果最終的答案小于等于0,直接輸出0
否則若答案是2^x ,輸出x即可。
每組數據占一行,具體輸出格式參見樣例。
?


Sample Input
2
2
-2 0
10
2 2 0 -2 0 2 2 -2 -2 0
?


Sample Output
Case #1: 0

Case #2: 4


思路:
? ? ?和最大連續子序列差不多,當0的時候置為0,要注意的事還有開個東西,記錄當前有多少個負數,更新的時候只有偶數的時候在更新,就這樣,果斷敲完,果斷wa了,哎! 其實沒考慮到這個問題,-2 2 2 2 2 2 ?我們在倒著跑一便就能排除這種情況了,因為畢竟只有奇偶兩種情況...還有一點就是,如果最小的是-2那么只喲一種情況 就是只喲一個數字 并且這個數字是-2,自己稍微想下就明白,不解釋...


#include<stdio.h>#define N (10000 + 500) int num[N];int main () {int t ,n ,i ,ans_max ,cas = 1;scanf("%d" ,&t);while(t--){scanf("%d" ,&n);int mk0 = 0;for(i = 1 ;i <= n ;i ++){scanf("%d" ,&num[i]);if(num[i]) mk0 = 1;}printf("Case #%d: " ,cas ++);if(!mk0 || n == 1 && num[1] == -2) {printf("0\n");continue;}ans_max = 0;int now = 0;int ss = 0;for(i = 1 ;i <= n ;i ++){if(!num[i]){ss = now = 0;continue;}if(num[i] < 0) ss ++;now ++;if(ss % 2 == 0 && ans_max < now)ans_max = now;}now = 0;ss = 0;for(i = n ;i >= 1;i --){if(!num[i]){ss = now = 0;continue;}if(num[i] < 0) ss ++;now ++;if(ss % 2 == 0 && ans_max < now)ans_max = now;}printf("%d\n" ,ans_max);}return 0; }

總結

以上是生活随笔為你收集整理的hdu4561 连续最大积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。