背包问题
来源:互联网 发布:古琴调音软件 编辑:程序博客网 时间:2024/06/06 18:34
Problem Description
简单的背包问题。设有一个背包,可以放入的重量为s。现有n(n<=10)件物品,重量分别为w1,w2,...,wn,均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s。找到一组解即可。如果找不到输出“not found”。
Input
输入有多组数据,每组数据的第1行是物品总件数和背包的载重量,第2行为各物品的重量。
Output
对于每组数据输出各所选物品的序号和重量。
Sample Input
5 101 2 3 4 5
Sample Output
number:1 weight:1number:4 weight:4number:5 weight:5
Author
代码:
#include<stdio.h>#include<string.h>int p[15],n,vis[15],a[15],flag;long m;void dfs(long sum){if(flag) return ;if(sum==m) {for(int j=1;j<=n;j++) if(a[j]) printf("number:%d weight:%d\n",j,a[j]);flag=1; return ;}for(int i=n;i>=1;i--){ if(!vis[i]){ vis[i]=1;a[i]=p[i];dfs(sum+p[i]);a[i]=0;vis[i]=0;}}}int main(){ int i,j; while(scanf("%d%d",&n,&m)!=EOF) { memset(vis,0,sizeof(vis)); memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%d",&p[i]); flag=0; dfs(0); if(flag==0) printf("not found\n"); } return 0;}
0 0
- 【无限背包】背包问题
- 背包问题---01背包
- 背包问题--部分背包
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- javascript中定义事件的三种方式
- 【做题技巧】输出多个数时最后一个数后空格的处理
- android sdk 更新失败
- 4.5-求BST的中序后继节点
- 游戏视频开发平台的特点
- 背包问题
- 第三方类库
- 将本地git仓库推送到github上
- cocos2dx 3.x 观察者模式_NotificationCenter的认识
- PostEvent详解
- poj2570(最短路+传递闭包)
- String类的个人总结
- rac 11g 安装错误“Timed outwaiting for the CRS stack to start”的解决
- eclipse新建工作空间,切换工作空间