标签:bsp pac for font lag lin sso code roc
描述
设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,...,wn。问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S。如果有满足条件的选择,则此背包有解,否则此背包问题无解。
input
第一行为物品重量S(整数);
第二行为物品数量n,
第三行为n件物品的重量的序列。
output
有解就输出”yes!“,没有解就输出”no!“
样例输入
样例输出
yes!
这道题我是通过递归的方式做的,如果最后一次恰好刚好装满则返回1,然后s减掉wn,如果没有则检查wn-1,s不变,最后通过递归返回到开始第一个。
我的代码如下
#include<stdio.h>
int bagWeight[50];int bag(int s,int n){ if(s==0) { return 1; } if(s<0||s>0&&n==0) { return 0; } if(bag(s-bagWeight[n],n-1)==1) { return 1; } return bag(s,n-1);}int main(){ int s; int n; int i; int flag; while(scanf("%d%d",&s,&n)!=EOF) { for(i=1; i<=n; i++) { scanf("%d",&bagWeight[i]); } flag=bag(s,n); if(flag==1) { printf("yes!"); } else { printf("no!"); } } return 0;}标签:bsp pac for font lag lin sso code roc
原文地址:http://www.cnblogs.com/swust-wangyf/p/6725948.html