BToj 1030 硬币问题 【DP-完全背包】

来源:互联网 发布:oracle导出整个数据库 编辑:程序博客网 时间:2024/06/06 12:18


题目链接:1030







代码:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[120];int dpin[10100],dpma[10100];int main(){int n,s;while (~scanf("%d%d",&n,&s)){for (int i=1;i<=n;i++)scanf("%d",&a[i]);if (s==0){printf("0 0\n");continue;}for (int i=1;i<=s;i++){dpin[i]=dpma[i]=-1;}dpin[0]=0;dpma[0]=0;int kk;for (int i=1;i<=s;i++){for (int j=1;j<=n;j++){kk=i-a[j];if (kk>=0){if (dpma[kk]!=-1){if (dpma[kk]+1>dpma[i])dpma[i]=dpma[kk]+1;}if (dpin[kk]!=-1){if (dpin[i]==-1){dpin[i]=dpin[kk]+1;}if (dpin[kk]+1<dpin[i])dpin[i]=dpin[kk]+1;}}}}printf("%d %d\n",dpin[s],dpma[s]);}return 0;}


0 0
原创粉丝点击