http://acm.hdu.edu.cn/showproblem.php?pid=1203
最终还是没有AC,有个Runtime Error(ACCESS_VIOLATION)
思路应该是正确的
#include <stdio.h>
#include <string.h>
#include <memory.h>
struct Thing
{
int weight;
double value;
};
double middle[1000][10000];
struct Thing things[1000];
double connie(int m,int n)
{
int i,j,k;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
middle[i][j]=-1;
for(i=0;i<m;i++)
{
if(things[i].weight>n)continue;
for(j=0;j<n;j++)
{
if(i==0)
{
if(j+1>=things[i].weight)
{
middle[i][j]*=(1-things[i].value);
}
}else if(things[i].weight>j+1)
{
middle[i][j]=middle[i-1][j];
}else
{
if(middle[i-1][j]>middle[i-1][j-things[i].weight]*(1-things[i].value))
{
middle[i][j]=middle[i-1][j];
}
else
{
middle[i][j]=middle[i-1][j-things[i].weight]*(1-things[i].value);
}
}
}
}
return middle[m-1][n-1];
}
int main()
{
int n,m;
int i,j,k;
double r;
while(scanf("%d%d",&n,&m),m||n)
{
for(i=0;i<m;i++)
scanf("%d%lf",&(things[i].weight),&(things[i].value));
r=connie(m,n);
printf("%.1f%%\n",(1+r)*100);
}
return 0;
}
分享到:
相关推荐
【标题】"背包变形问题treasure"涉及到的是一个经典的计算机科学和算法设计的问题,它属于动态规划(Dynamic Programming,简称DP)领域的一个经典实例。在01背包问题中,我们通常面临一个问题:有一个容量有限的...
总的来说,分治法虽然不是直接应用于01背包问题,但动态规划作为一种解决这类问题的高效方法,可以看作是分治思想的一种变形。C语言的简洁性使得我们能够清晰地表达出这种算法的逻辑,从而有效地解决实际问题。
背包问题有多种变形,包括0/1背包问题、完全背包问题、多重背包问题等。 在给定的文件中,提供了一个通用的背包问题模板,使用C++语言实现。该模板可以解决各种背包问题,只需要根据问题的需求修改参数即可。 在这...
在实际应用中,背包问题的变形丰富多样,解决这些问题往往需要对动态规划有深入的理解。 在动态规划的实现中,时间和空间复杂度是重要的性能指标。针对0/1背包问题,时间复杂度一般为O(VN),其中V是背包容量,N是...
- **解决方案**:通过对经典背包问题的变形进行分类讨论,培养对不同类型问题的识别能力和解决策略。 #### 第三章:附录 - **USACO中的背包问题**:列举了一些USACO(美国计算机奥林匹克)训练平台上的背包问题...
0-1背包问题有多种变形,如完全背包问题(每个物品可以无限次放入背包)、多重背包问题(每个物品有有限的数量)等。动态规划方法不仅在计算机科学中有广泛应用,如图论、网络流、最短路径问题,也在经济学、工程学...
【背包问题】是一种经典的计算机科学优化问题,常用于求解有限...这个算法不仅适用于01背包问题,还可以作为其他背包问题的出发点,进行相应变形和扩展。在实际编程中,可以封装`ZeroOnePack`函数,提高代码复用性。
10. **背包问题问法的变化**指的是问题可以有不同的变形,如时间限制、物品价值可变、目标是最小化重量等,需要灵活应用动态规划方法。 在实际应用中,背包问题广泛存在于资源调度、任务分配、投资决策等领域。解决...
这些问题本质上都是背包问题的不同变形,关键在于如何将问题转化为标准的背包问题形式。 **动态规划方程**: - 需要根据具体问题进行分析和设计。 **时间复杂度**: 取决于具体问题。 **空间复杂度**: 取决于具体...
5. 多人站台阶问题:这是一个经典的背包问题变形,需要考虑每个台阶可站人数的限制,可以看作是部分背包问题的求解。 6. 小球和盒子问题:这种问题是典型的计数问题,要求不允许有空盒子并且球与盒子编号不能相同,...
此外,还有一种背包问题的变形,即分数背包问题,它允许分割物品。这意味着物品可以按照一定的比例选取,而不需要全选或全不选。分数背包问题的解决通常采用贪心策略,通过考虑物品价值与重量的比值来选取。 ### ...
解决这个问题的一种方法是将其看作是每种物品只有一件的0-1背包问题的变形。另一种方法是利用单调队列优化的动态规划方法。状态转移方程为: ``` dp[i][j] = max(dp[i-1][j], dp[i][j-w[i]] + v[i]) (j >= w[i]) dp...
背包问题有很多种变形,包括01 背包问题、完全背包问题、多重背包问题、分组背包问题等,每种问题都有其特点和解决方法。但是,背包问题的基本思想都是相同的,那就是使用动态规划的方法来解决问题。 背包问题是...
最后,作者讨论了背包问题在实际中可能遇到的变形和变化,强调了理解动态规划本质的重要性,以及如何运用动态规划的方法去解决类似问题。 文章通过详细的讲解和例子,旨在帮助读者理解动态规划解决问题的过程,并...
对于不同类型的问题,需要灵活应用已有的背包问题解决方法,有时还需要进行一定的变形或创新。 综上所述,背包问题是一个非常经典的问题类型,通过对以上各讲的学习和掌握,可以更好地理解和解决各种实际问题中的...
【模型拓展】背包问题有多种变形和扩展,例如多选择背包问题和多约束背包问题。在多选择背包问题中,物品分为多个类别,每个类别只能选择一个物品,目标是最小化总重量并满足背包容量限制。其数学模型为: $$ \min ...
背包问题有多种变形,但基本思想是将物品按照价值和重量排序,然后选择合适的物品。 2. Java Swing库简介: Java Swing库是一个Java语言中的图形用户界面库,提供了一系列的组件和工具,用于创建图形用户界面。...
在实际应用中,0-1背包问题有多种变形,如完全背包(每种物品可以无限选取)、多重背包(每种物品有限定数量可选)等,它们都可以通过动态规划的方法进行求解,只是递推公式和细节有所差异。 总的来说,0-1背包问题...
内容概要:本文通过对蓝桥杯典型题目“01背包问题”的详细解析,展示了从问题分析、解题思路到代码实现的完整流程。文章采用实战项目的方式,以动态规划为核心,结合具体实例进行讲解,使读者不仅了解解题方法,还能...
方案一是可拆卸式布体,周围布料带有粘扣,便于连接和拆卸,但可能在背包倾斜时出现问题。而方案二采用折叠式设计,虽然制作稍复杂,但能更好地适应变形需求,确保结构的稳固性。 综上所述,这款多功能救灾背包设计...