最近的一篇題目

來源:互聯網
上載者:User

標籤:space   不用   max   最大的   應該   return   比較   clu   pac   

UVa11059Maximum Product

題意

給一串整數S,你需要找到其連續子序列中乘積最大的那個,輸出其乘積。如果找到的答案不是正數,那麼輸出0,表示無解。

另外注意:每組輸入後面都有一行空格,每組輸出後面也應該有一行空格。輸入以EOF結束。

然後,按照UVa中的資料範圍,它不是很大,差不多就是: 1<=n<=18,-10<=s[i]<=10;

本人思路:

因為是最大乘積+連續子序列,所以這就是一個連乘題目 當然首先的一個思路就是暴力如下:

那麼在這麼小的資料範圍內,一個longlong即可,因為數內有負數,所以我們可以先搜尋一遍是否擁有負數,若沒有,就把整個S數組乘起來,或者負數的個數共有偶數個也可以乘起來

such as this: ans*=s[i]

若有負數且不為偶數個,那麼就暴力搜尋子序列中乘積最大的值,然後輸出正解即可,這裡的這個你可以認為是首碼和變成首碼乘

(那啥,這個代碼我沒寫我用的是另一種思路,上面這個比較好理解)

另一種思路:

直接暴力(本人走暴力流)
連續子序列的兩種要素:起點和終點。

這裡和上面的第二部有些類似,需要枚舉起點和終點的位置即所有連續子序列。對於其中元素來說,只需要枚舉出全部連續子序列然後計算乘積比較就行。

對於其中的乘積不會超過10^18,所以爆搜加一個longlong就可以解決問題

釋放代碼(蠢蠢欲動的代碼)

#include<iostream>#include<cstdio>#include<algorithm> using namespace std;long long s[105];//數組,來存的 int main(){    int n;    int cnt=0;//這個是用來計算第幾個解的     while(cin>>n){            long long ans=0;        for (int i=0;i<n;++i)            cin>>s[i];        for (int i=1;i<=n;++i){            for (int j=0;j+i<=n;++j){            //這裡的j是子序列的起點,從0開始找                 long long jishu=1;//這個計數器是用來比較連續子序列乘積與ans原數的大小                 //相當於計算機裡的 M+ (笑)                 for (int k=j;k<j+i;++k){                //確定不同的終點                     jishu*=s[k];//連乘                     //嘗試輸出jishu,你就可以知道運行多少次                    //cout<<jishu<<endl;(不用謝)                 }                ans=max(ans,jishu);//開始比較,並且換上較大的數到ans中             }        }        printf("Case #%d: The maximum product is %lld.\n\n",++cnt,ans);//我認為這個輸出比較麻煩        //不要忘記\n     }    return 0;}

 

最近的一篇題目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.