神奇的口袋

2021-08-11 16:45:32 字數 834 閱讀 6777

**於牛客考研真題

題目描述

有乙個神奇的口袋,總的容積是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...