本文共 554 字,大约阅读时间需要 1 分钟。
#includeint max(int a,int b){ if(a>b) return a; else return b;}int main(){ int n,m; int i,j,k; int a[10],b[10]; int f[10][100]; while(scanf("%d%d",&n,&m)&&n!=0&&m!=0) { for(i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); memset(f,0,sizeof(f)); for(int i=1;i<=n;i++) for(int j=m;j>0;j--){ if(a[i]<=j) f[i][j]=max(f[i-1][j],f[i-1][j-a[i]]+b[i]); else f[i][j]=f[i-1][j]; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { printf("%d ",f[i][j]); } }}}
转载地址:http://hqke.baihongyu.com/