動態規劃之分蘋果

來源:互聯網
上載者:User

標籤:code   str   ++   [1]   div   static   順序   int   log   

 題目描述:將M個蘋果放置到N個盤子中,可以有盤子為空白,但是不分順序,例如5個蘋果分到3個盤子中,1+1+3和1+3+1視為同一種方法,求所有的方法總數。
****動態規劃*****

import java.util.Scanner; 2 public class Main{ 3 public static void main(String[] args) 4 { 5 /* 6 *以dp[i][j]表示i個蘋果放置到j個盤子的方法數 7 *i個蘋果放到j個盤子中(不分順序)分為兩種情況 8 *1.有一個盤子為空白(此種情況包含多個盤子為空白的狀況) 9 *方法數為dp[i][j-1]10 *2.所有盤子都不為空白,則每個盤子至少有一個蘋果,剩餘的11 *i-j個蘋果在放置到j個盤子中,方法數為dp[i-j][j]12 *則dp[i][j] = dp[i][j-1]+dp[i-j][j]13 (另外要考慮當就j>i時,dp[i][j]=dp[i][i])14 */15 Scanner sc = new Scanner(System.in);16 while(sc.hasNext())17 {18 int M = sc.nextInt();19 int N = sc.nextInt();20 int[][] dp = new int[M+1][N+1];21 for(int i=1;i<=N;i++)22 {23 dp[1][i]=1;24 dp[0][i]=1;25 }26 for(int i=1;i<=M;i++)27 {28 dp[i][1]=1;29 dp[i][0]=0;30 }31 for(int i=2;i<=M;i++)32 {33 for(int j=2;j<=N;j++)34 {35 if(i>=j)36 dp[i][j] = dp[i][j-1]+dp[i-j][j];37 else38 dp[i][j]=dp[i][i];39 }40 }41 System.out.println(dp[M][N]); 42 }43 }44 }

 

動態規劃之分蘋果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.