`

背包问题的变形

阅读更多

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

    【标题】"背包变形问题treasure"涉及到的是一个经典的计算机科学和算法设计的问题,它属于动态规划(Dynamic Programming,简称DP)领域的一个经典实例。在01背包问题中,我们通常面临一个问题:有一个容量有限的...

    分治法求01背包问题c语言

    总的来说,分治法虽然不是直接应用于01背包问题,但动态规划作为一种解决这类问题的高效方法,可以看作是分治思想的一种变形。C语言的简洁性使得我们能够清晰地表达出这种算法的逻辑,从而有效地解决实际问题。

    背包问题模板 hdu2191

    背包问题有多种变形,包括0/1背包问题、完全背包问题、多重背包问题等。 在给定的文件中,提供了一个通用的背包问题模板,使用C++语言实现。该模板可以解决各种背包问题,只需要根据问题的需求修改参数即可。 在这...

    背包九讲V2.pdf

    在实际应用中,背包问题的变形丰富多样,解决这些问题往往需要对动态规划有深入的理解。 在动态规划的实现中,时间和空间复杂度是重要的性能指标。针对0/1背包问题,时间复杂度一般为O(VN),其中V是背包容量,N是...

    背包问题九讲

    - **解决方案**:通过对经典背包问题的变形进行分类讨论,培养对不同类型问题的识别能力和解决策略。 #### 第三章:附录 - **USACO中的背包问题**:列举了一些USACO(美国计算机奥林匹克)训练平台上的背包问题...

    动态规划-0-1背包问题

    0-1背包问题有多种变形,如完全背包问题(每个物品可以无限次放入背包)、多重背包问题(每个物品有有限的数量)等。动态规划方法不仅在计算机科学中有广泛应用,如图论、网络流、最短路径问题,也在经济学、工程学...

    背包问题九讲.doc

    【背包问题】是一种经典的计算机科学优化问题,常用于求解有限...这个算法不仅适用于01背包问题,还可以作为其他背包问题的出发点,进行相应变形和扩展。在实际编程中,可以封装`ZeroOnePack`函数,提高代码复用性。

    背包九讲——背包问题的详细分析

    10. **背包问题问法的变化**指的是问题可以有不同的变形,如时间限制、物品价值可变、目标是最小化重量等,需要灵活应用动态规划方法。 在实际应用中,背包问题广泛存在于资源调度、任务分配、投资决策等领域。解决...

    背包问题(详细)

    这些问题本质上都是背包问题的不同变形,关键在于如何将问题转化为标准的背包问题形式。 **动态规划方程**: - 需要根据具体问题进行分析和设计。 **时间复杂度**: 取决于具体问题。 **空间复杂度**: 取决于具体...

    2020届高考数学大二轮复习刷题首秧第一部分刷考点考点十八排列与组合理201912260344

    5. 多人站台阶问题:这是一个经典的背包问题变形,需要考虑每个台阶可站人数的限制,可以看作是部分背包问题的求解。 6. 小球和盒子问题:这种问题是典型的计数问题,要求不允许有空盒子并且球与盒子编号不能相同,...

    背包问题九讲.pdf

    此外,还有一种背包问题的变形,即分数背包问题,它允许分割物品。这意味着物品可以按照一定的比例选取,而不需要全选或全不选。分数背包问题的解决通常采用贪心策略,通过考虑物品价值与重量的比值来选取。 ### ...

    算法文档无代码浅谈几类背包问题

    解决这个问题的一种方法是将其看作是每种物品只有一件的0-1背包问题的变形。另一种方法是利用单调队列优化的动态规划方法。状态转移方程为: ``` dp[i][j] = max(dp[i-1][j], dp[i][j-w[i]] + v[i]) (j &gt;= w[i]) dp...

    背包九讲——修正版

    背包问题有很多种变形,包括01 背包问题、完全背包问题、多重背包问题、分组背包问题等,每种问题都有其特点和解决方法。但是,背包问题的基本思想都是相同的,那就是使用动态规划的方法来解决问题。 背包问题是...

    楼教主的背包九讲

    最后,作者讨论了背包问题在实际中可能遇到的变形和变化,强调了理解动态规划本质的重要性,以及如何运用动态规划的方法去解决类似问题。 文章通过详细的讲解和例子,旨在帮助读者理解动态规划解决问题的过程,并...

    背包九讲完整版

    对于不同类型的问题,需要灵活应用已有的背包问题解决方法,有时还需要进行一定的变形或创新。 综上所述,背包问题是一个非常经典的问题类型,通过对以上各讲的学习和掌握,可以更好地理解和解决各种实际问题中的...

    背包问题模型的MATLAB程序实现.pdf

    【模型拓展】背包问题有多种变形和扩展,例如多选择背包问题和多约束背包问题。在多选择背包问题中,物品分为多个类别,每个类别只能选择一个物品,目标是最小化总重量并满足背包容量限制。其数学模型为: $$ \min ...

    JAVA 关于背包问题求解.doc

    背包问题有多种变形,但基本思想是将物品按照价值和重量排序,然后选择合适的物品。 2. Java Swing库简介: Java Swing库是一个Java语言中的图形用户界面库,提供了一系列的组件和工具,用于创建图形用户界面。...

    算法-动态规划- 背包问题 P01- 0-1背包(包含源程序).rar

    在实际应用中,0-1背包问题有多种变形,如完全背包(每种物品可以无限选取)、多重背包(每种物品有限定数量可选)等,它们都可以通过动态规划的方法进行求解,只是递推公式和细节有所差异。 总的来说,0-1背包问题...

    算法竞赛领域蓝桥杯解析-01背包问题动态规划实战详解

    内容概要:本文通过对蓝桥杯典型题目“01背包问题”的详细解析,展示了从问题分析、解题思路到代码实现的完整流程。文章采用实战项目的方式,以动态规划为核心,结合具体实例进行讲解,使读者不仅了解解题方法,还能...

    多功能救灾背包设计说明书.pdf

    方案一是可拆卸式布体,周围布料带有粘扣,便于连接和拆卸,但可能在背包倾斜时出现问题。而方案二采用折叠式设计,虽然制作稍复杂,但能更好地适应变形需求,确保结构的稳固性。 综上所述,这款多功能救灾背包设计...

Global site tag (gtag.js) - Google Analytics