題目描述
有乙個神奇的口袋,總的容積是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就可以得到這些物品。現在的問題是...