數字和為sum的方法數


[編程題] 數字和為sum的方法數
給定一個有n個正整數的數組A和一個整數sum,求選擇數組A中部分數字和為sum的方案數。 當兩種選取方案有一個數字的下標不一樣,我們就認為是不同的組成方案。  
輸入描述:
輸入為兩行: 
第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 
第二行為n個正整數A[i](32位整數),以空格隔開。
輸出描述:
輸出所求的方案數
輸入例子:
5 15
5 5 10 2 3
輸出例子:
4
方法思想:動態規划思想
代碼:
import java.util.Scanner;
 
public class Test62 {
    public static int n=0;
    public static long calSum1(int a[],int sum){
        long dp[][]=new long[n+1][sum+1];
        dp[0][0]=1;
        for(int i=1;i<=n;i++){
            for(int j=0;j<=sum;j++){
                if(j>=a[i])
                    dp[i][j]=dp[i-1][j-a[i]]+dp[i-1][j];
                else
                    dp[i][j]=dp[i-1][j];
            }
        }
        return dp[n][sum];
    }
     
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            n=in.nextInt();
            int a[]=new int[n+1];
            int sum=in.nextInt();
            for(int i=1;i<=n;i++){
                a[i]=in.nextInt();
            }
            System.out.println(calSum1(a,sum));
        }
        in.close();
    }
 
}

 圖解:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM