蓝桥网 算法训练 最大体积

来源:互联网 发布:matlab粒子群算法例子 编辑:程序博客网 时间:2024/05/18 00:35
问题描述
  每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000
  如果是无限解,则输出0
输入格式
  第一行一个整数n(n<=10),表示物品的件数
  第2行到N+1行: 每件物品的体积(1<= <=500)
输出格式
  一个整数ans,表示不能用这些物品得到的最大体积。
样例输入
3
3
6
10
样例输出

17


AC代码:

# include <stdio.h># include <algorithm>using namespace std;int dp[100010], l[100010], a[510];int main(){int i, j, k, n;scanf("%d", &n);for(i=1; i<=n; i++){scanf("%d", &a[i]);}sort(a+1, a+1+n);dp[0]=1;int max=0, flage;for(i=1; i<=100000000;i++){flage=0;for(j=1; j<=n; j++){if(i>=a[j]){if(dp[i-a[j]]){flage=1;dp[i]=1;l[i]=l[i-1]+1;if(l[i]>=a[1]){printf("%d", max);return 0;}break;}}}if(!flage){max=i;}}printf("0");    return 0;}


0 0
原创粉丝点击