硬币找零问题(完全背包)

来源:互联网 发布:那家淘宝玩具网店好 编辑:程序博客网 时间:2024/05/15 07:14
#include <stdio.h>#include <string.h>int a[100];int dp[100][1000];int min(int a,int b){    return a<b?a:b;} int main() {     int n,m,i,j,k,ans;     scanf("%d%d",&n,&m);     for (i=1;i<=n;i++)     scanf("%d",&a[i]);     for (i=1;i<=n;i++)        for (j=1;j<=m;j++)        dp[i][j]=9999;     for (i=2;i<=n;i++)        for (j=0;j<=m;j++)        {            ans=99999;         for (k=0;k<=j/a[i];k++)         ans=min(ans,dp[i-1][j-k*a[i]]+k);            dp[i][j]=ans;         }         printf("%d\n",dp[n][m]<m?dp[n][m]:-1);         return 0; }

0 0