Openjudge 2755 神奇的口袋

2021-09-02 22:24:04 字數 411 閱讀 1715

我們來分析一下題目,從k種物品中選出幾個,每種只能選出乙個,看能有多少種填法能將揹包填滿。

我先說用遞迴的寫法,

首先傳給遞迴函式兩個引數,乙個是口袋的空間,乙個是還有多少個物品可以選擇。

從第k個開始選擇,然後填入口袋。

但是第k-1個物品不想填該怎麼操作?

下面貼出**

#includeusing namespace std;

int a[30];

int n;

int ways(int w,int k)

if(k<=0)

return ways(w,k-1)+ways(w-a[k],k-1);

}int main()

cout

}

2755 神奇的口袋

2755 神奇的口袋 檢視提交統計提示提問 總時間限制 10000ms 記憶體限制 65536kb 描述有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,...

百練 2755 神奇的口袋

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

百練 2755 神奇的口袋

遞迴 include include include includeusing namespace std const int maxn 30 int n,d maxn int dp int w,int n int main 人人為我動歸 狀態定義 揹包容量為i時,選完前j件物品後,能達到該容量的最...