完全背包--piggy-bank

http://poj.org/problem?id=1384

完全背包是物品的个数是无限的。

 二维数组:(这个题目用二维数组会超时)

由于dp数组初始化的问题,一直答案不对。

后面发现是:

 for(int i=0;i<=N;i++)
      dp[i][0]=0;

 

复制代码
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<iomanip> 
using namespace std; 
#define INF 10000000
int P[505],W[505];//每种硬币的金额,单个重量 
int dp[505][10005]; 
int main() 
{
  int T;
  cin>>T;
  int E,F;//空的存钱罐的重量,装了硬币的存钱罐的重量 
  int N;//多少种不同的硬币 
  while(T--)
  {
     cin>>E>>F;
     cin>>N;
     int shiji=F-E;
     for(int i=1;i<=N;i++)
      cin>>P[i]>>W[i];
    for(int i=0;i<=N;i++)
     for(int j=0;j<=shiji;j++)
      dp[i][j]=INF;
    for(int i=0;i<=N;i++)
      dp[i][0]=0;
     for(int i=1;i<=N;i++)
      for(int j=1;j<=shiji;j++)
      {
           if(j<W[i])
           dp[i][j]=dp[i-1][j];
         else
         {
            dp[i][j]=min(dp[i-1][j],dp[i][j-W[i]]+P[i]);    
         }
    }  
    if(dp[N][shiji]<INF)
     cout<<"The minimum amount of money in the piggy-bank is "<<dp[N][shiji]<<"."<<endl;
    else
     cout<<"This is impossible."<<endl;
  } 
   return 0;
} 
复制代码

一维数组:

复制代码
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<iomanip> 
using namespace std; 
#define INF 10000000
int P[505],W[505];//每种硬币的金额,单个重量 
int dp[10005]; 
int main() 
{
  int T;
  cin>>T;
  int E,F;//空的存钱罐的重量,装了硬币的存钱罐的重量 
  int N;//多少种不同的硬币 
  while(T--)
  {
     cin>>E>>F;
     cin>>N;
     int shiji=F-E;
     for(int i=1;i<=N;i++)
      cin>>P[i]>>W[i];
     for(int j=0;j<=shiji;j++)
      dp[j]=INF;
      dp[0]=0;
     for(int i=1;i<=N;i++)
      for(int j=W[i];j<=shiji;j++)
      {
            dp[j]=min(dp[j],dp[j-W[i]]+P[i]);    
         
    }  
    if(dp[shiji]<INF)
     cout<<"The minimum amount of money in the piggy-bank is "<<dp[shiji]<<"."<<endl;
    else
     cout<<"This is impossible."<<endl;
  } 
   return 0;
} 
复制代码

 

posted @   Tomorrow1126  阅读(136)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示