我們來分析一下題目,從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件物品後,能達到該容量的最...