有乙個口袋容積為m,有n個物品,題目的體積為a1,a2,a3…an。把m裝滿有多少種不同的裝法。
遞迴:
int dfs(int n, int m)/*從n個物品中選出總體積為m的選法*/
遞推:dp[i][j]=dp[i-1][j]+(j>=a[i]?dp[i-1][j-a[i]]:0);
初始條件:dp[i][0]=1; (0<=i<=n)/*全部不選*/
遞迴:(可以轉化成記憶化遞迴)
#include
using
namespace std;
int a[
100]
;int dp[
100]
[100]=
;int
main()
for(
int i=
1;i<=n;i++)}
cout<[m]
}遞推:
#include
using
namespace std;
int a[
100]
;int
dfs(
int n,
int m)
intmain()
cout<<
dfs(n, m)
}
入門DP 神奇的口袋
總time limit 10000ms memory limit 65536kb description 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a 1,a2 a n。john可以從這些物品中選擇...
神奇的口袋(回溯 DP
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...
poj 2755 神奇的口袋 dp
poj 2755 神奇的口袋 dp 總時間限制 10000ms 記憶體限制 65536kb 描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選...