电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

ACM程序设计竞赛例题

ACM程序设计竞赛例题_第1页
1/52
ACM程序设计竞赛例题_第2页
2/52
ACM程序设计竞赛例题_第3页
3/52
备战 ACM 资料习题1.0-1 背包问题在 0 / 1 背包问题中,需对容量为 c 的背包进行装载.从 n 个物品中选取装入背包的物品,每件物品 i 的重量为 wi ,价值为 pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。 程序如下:#include 〈stdio.h>void readdata();void search(int);void checkmax();void printresult();int c=35, n=10; //c: 背包容量;n:物品数int w[10], v[10]; //w[i]、v[i]:第 i 件物品的重量和价值int a[10], max; //a 数组存放当前解各物品选取情况;max:记录最大价值 //a[i]=0 表示不选第 i 件物品,a[i]=1 表示选第 i 件物品int main(){readdata(); //读入数据search(0); //递归搜索printresult();}void search(int m){if(m>=n)checkmax(); //检查当前解是否是可行解,若是则把它的价值与 max 比较else{a[m]=0; //不选第 m 件物品search(m+1); //递归搜索下一件物品a[m]=1; //不选第 m 件物品search(m+1); //递归搜索下一件物品}}void checkmax(){int i, weight=0, value=0;for(i=0;i〈n;i++){if(a[i]==1) //假如选取了该物品{weight = weight + w[i]; //累加重量value = value + v[i]; //累加价值}}if(weight<=c) //若为可行解if(value>max) //且价值大于 maxmax=value; //替换 max}void readdata(){int i;for(i=0;i

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

ACM程序设计竞赛例题

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群