简单的背包问题
【问题描述】
设有一个背包,可以放入的重量为s。现有n件物品,重量分别为w1,w2…,wn,(1≤i≤n)均为正整数,从n件物品中挑选若干件,
使得放入背包的重量之和正好为s。找到一组解即可。
【输入格式】
第一行是物品总件数和背包的载重量,第二行为各物品的重量。
【输出格式】
各所选物品重量。
【输入样例】
10 5
1 2 3 4 5
【输出样例】
number:1 weight:1
number:4 weight:4
number:5 weight:5
//代码:
#include<stdio.h>
int w[100]; //将w数组设置成全局变量,使得数组在main函数和knap函数中都可以用
int knap(int s, int n)
{
if(s == 0) //当重量减为0时表示有解,所以return 1;
{
return 1;
}
if(s<0 || (s>0&&n<1)) //背包装不下或者物品不够装时,都无解,所以return 0;
{
return 0;
}