01背包---最小邮票数

#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

#define INF 1000000;
const int maxn=1001;

int dp[maxn];
int v[maxn];

int main()
{
 int n,m;
 while(scanf("%d%d",&n,&m)!=EOF)//n张邮票 m总值
 {
   for(int i=0;i<n;i++)
   {
     scanf("%d",&v[i]);
   }
   for (int i=0;i<=m;++i)
   {
     dp[i]=INF;//初始化
   }
   dp[0]=0;
   for(int i=0;i<n;++i)
   {
     for(int j=m;j>=v[i];--j)
     dp[j]=min(dp[j],dp[j-v[i]]+1);
   }
   printf("%d\n",dp[m]);
 }
  system("pause");
  return 0; 
}
发布了22 篇原创文章 · 获赞 1 · 访问量 575

猜你喜欢

转载自blog.csdn.net/baidu_37143827/article/details/104654198