DFS 題目1114:神奇的口袋

來源:互聯網
上載者:User
題目描述:

有一個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。John現在有n個想要得到的物品,每個物品的體積分別是a1,a2……an。John可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,John就可以得到這些物品。現在的問題是,John有多少種不同的選擇物品的方式。

輸入:

輸入的第一行是正整數n (1 <= n <= 20),表示不同的物品的數目。接下來的n行,每行有一個1到40之間的正整數,分別給出a1,a2……an的值。

輸出:

輸出不同的選擇物品的方式的數目。

範例輸入:
3202020
範例輸出:
3

import java.io.BufferedInputStream;import java.util.Arrays;import java.util.Scanner; public class Main{    static int n;    static int arr[];    public static void main(String[] args) {        Scanner s = new Scanner(new BufferedInputStream(System.in));        while(s.hasNextInt()){            n = s.nextInt();            arr = new int[n];            for(int i=0;i<n; i++)                arr[i] = s.nextInt();                        System.out.println(f(n-1,40));        }             }         static int f(int n,int sum){        if(sum < 0)            return 0;        if(sum == 0)            return 1;        if(n==0)            return arr[0] == sum ? 1:0;        else            return f(n-1,sum)+f(n-1,sum-arr[n]);    } }

聯繫我們

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