**於牛客考研真題
題目描述
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2……an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john有多少種不同的選擇物品的方式。
輸入描述:
輸入的第一行是正整數n (1 <= n <= 20),表示不同的物品的數目。接下來的n行,每行有乙個1到40之間的正整數,分別給出a1,a2……an的值。
輸出描述:
輸出不同的選擇物品的方式的數目。
示例1
輸入3
20 20
20 輸出
拿到這個題先想到輸入的因為有數量限制20所以想用乙個陣列來儲存每個物品的體積值。基本雛形是輸入num,然後for迴圈輸入各個體積,然後通過函式計算總的可能結果然後輸出。
函式怎麼計算各個可能呢,每個都迴圈一遍肯定不行,考慮到最多有20個體積,每個體積可能加入可能不加入,乾脆窮舉全部的可能再吧等於40的列出。這是初步想法,在寫的時候想用二叉樹來計算,分為加和不加兩支,到葉子就知道結果了,後來想到別窮舉了,只計算等於40的計數就行。
#include
using
namespace
std;
int a[100],num;
int ways(int n,int wight)
int main()
cout
<40);
return
0;}
神奇的口袋
原題 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,j...
神奇的口袋
時間限制 1 sec 記憶體限制 32 mb 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,jo...
神奇的口袋
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...