溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么解決剪繩子問題

發(fā)布時間:2022-03-22 15:53:27 來源:億速云 閱讀:183 作者:iii 欄目:互聯(lián)網科技

本篇內容介紹了“Java怎么解決剪繩子問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

剪繩子問題

題目:

給你一根長度為n的繩子,請把繩子剪成m段(m、n都是整數(shù),n>1并且m>1),每段繩子的長度記為k[0],k[1],...k[m]。

請問k[0]*k[1]*...k[m]可能的最大乘機是多少?

例如:當繩子的長度是8時,我們把他剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。

int maxProductAfterCutting(int length){    if(length<2)return 0 ;    if(length==2)return 1;    if(length==3)return 2;//這里是2而不是下面的3,是因為最少要分割2次
   //products[i]存放的是第長度為i的繩子剪成若干段后,各段乘機的最大值,    int*products=new int[length+1];    products[0]=0;    products[1]=1;    products[2]=2;    products[3]=3;//這個地方與上面return是不同的,因為長度為3的繩子各段乘積的最大值是3
   for(int i=;i<=length;++i)//i是遞增的,也就是繩子長度是遞增的,先求出長度為i的乘機最大值,    {    //在求product[i]之前,對于每一個j(分割后每一小段繩子的長度)而言,product[j]都已經求出來了,并 //且結果保存在projects[j]里,為了求解product[j],需要求出所有可能的product[j]*product[i-j]并//比較他們的最大值。        for(int j=1;j<=(i/2);++j)        {            int product=product[j]*product[i-j];            if(max<product)                max=product;            product[i]=max;        }    }    max=products[length];    delete[] products;
   return max;
}

“Java怎么解決剪繩子問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI