大佬求助

题目描述                            

有N包书,数量为a[i],现在需要X本书。我们需要尽可能少的拆开包装。问至少需要拆开多少个包装正好共有X本书。

输入                            

    第一行,两个数N和X。

    第二行,N个数A[i]

输出                            

    如果存在挑选的方案,输出一个整数,代表最小的包数;否则输出一行“impossible”(不含引号)。

全部评论
#include<bits/stdc++.h> using namespace std; int f[110][110]; int main(){     int i,n,x,a[110],j;     scanf("%d%d",&n,&x);     for(i=1;i<=n;i++)scanf("%d",&a[i]);     for(i=0;i<=n;i++)f[i][0]=0;     for(j=1;j<=x;j++)f[0][j]=INT_MAX;     for(i=1;i<=n;i++)       for(j=1;j<=x;j++)         if(a[i]>j)f[i][j]=f[i-1][j];         else f[i][j]=min(f[i-1][j],f[i-1][j-a[i]]+1);     printf("%d",f[n][x]);     return 0; }
点赞 回复 分享
发布于 2020-02-02 17:09

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务