codeup 神奇的口袋 C

2021-10-02 21:44:52 字數 761 閱讀 7320

題目描述

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

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

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

樣例輸入 copy

2

1228321

105

樣例輸出 copy

1

0

解題思路:這是乙個0-1揹包問題,在容量為m的揹包中放進n個東西,每次放進乙個東西m = m - a[n] , n = n - 1。遞迴的邊界:當揹包容量正好為0時,返回1;當揹包容量小於0(即不能再放進東西),或者所有物品放進去之後揹包的容量仍然不等於0(即n == 0時),此時返回0。

#include #include using namespace std;

int a[20]=;

int f(int m,int n) // 容量為 m 的揹包裡放進前 n 個物品

int main()

return 0;

}

參考部落格:

codeup 問題 C 神奇的口袋

題目描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是...

Code Up 4 3問題 C 神奇的口袋

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

問題 C 神奇的口袋

題目描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是...