dp完全背包
#include <iostream>
#define N 33000
using namespace std;
int dp[N];
int main()
{
int n;
int i,j;
dp[0]=1;
for(i=1;i<=3;i++)
{
for(j=i;j<N;j++)
{
dp[j]+=dp[j-i];
}
}
while(cin>>n)
{
cout<<dp[n]<<endl;
}
return 0;
}
本文介绍了一个使用动态规划解决完全背包问题的C++实现案例。通过双重循环递推更新状态数组dp,实现对物品的累加计数。最终输出dp数组中指定位置的值作为解。该方法适用于解决物品可以无限次使用的背包问题。
dp完全背包
#include <iostream>
#define N 33000
using namespace std;
int dp[N];
int main()
{
int n;
int i,j;
dp[0]=1;
for(i=1;i<=3;i++)
{
for(j=i;j<N;j++)
{
dp[j]+=dp[j-i];
}
}
while(cin>>n)
{
cout<<dp[n]<<endl;
}
return 0;
}
被折叠的 条评论
为什么被折叠?