2026/5/24 1:16:35
网站建设
项目流程
做能支付的网站贵吗,虚拟主机WordPress镜像下载,中标公示查询网站,wordpress手机浏览5 10 //5代表5件物品 10代表 取这5件物品种 哪几样 可以加起来为10
1 2 3 4 5
//第1件物品重量1
//第2件物品重量2
//第3件物品重量3
//第4件物品重量4
//第5件物品重量5
现在我们想#xff0c;我们有一个布袋#xff0c;初始状态里面是空的#xff0c;意味着哪几…5 10 //5代表5件物品 10代表 取这5件物品种 哪几样 可以加起来为101 2 3 4 5//第1件物品重量1//第2件物品重量2//第3件物品重量3//第4件物品重量4//第5件物品重量5现在我们想我们有一个布袋初始状态里面是空的意味着哪几方面信息第一 重量为0第二 物品个数为0第三 总重量不等于10以上状态我们用0来表示接下来我们分析我们对第一个物品可以做的事就是把他放进布袋或不放进布袋那们结合前面的0状态再加上第一个物品的两个状态就可以看到以下情况0 0 1 0代表不取 1代表取如果这看明白了在对一个物品处理之后就是处理第二个物品是不是00 10 1 0 1同样第三个第四个也是这原理00 10 1 0 10 1 0 1 0 1 0 1…如果以上能理解了就应当有递归的感觉了题目要求找到一组解即可。说明会有很多情况其实是可以满足要求的比如上面的案例 1234为10 145为10 235为10接下来用代码写函数510//5代表5件物品 10代表 取这5件物品种 哪几样 可以加起来为1012345//第1件物品重量1//第2件物品重量2//第3件物品重量3//第4件物品重量4//第5件物品重量5现在我们想我们有一个布袋初始状态里面是空的意味着哪几方面信息 第一 重量为0第二 物品个数为0第三 总重量不等于10以上状态我们用0来表示 接下来我们分析我们对第一个物品可以做的事就是把他放进布袋或不放进布袋 那们结合前面的0状态再加上第一个物品的两个状态就可以看到以下情况0010代表不取1代表取 如果这看明白了在对一个物品处理之后就是处理第二个物品 是不是0010101同样第三个第四个也是这原理001010101010101.....如果以上能理解了就应当有递归的感觉了 题目要求找到一组解即可。说明会有很多情况其实是可以满足要求的 比如上面的案例1234为10145为10235为10接下来用代码写函数#includeiostreamusingnamespacestd;typedefstruct{intindex;intvalue;}Data;inta[10000],s,n;Data data[10000];intsize;boolcheck(intSumweigth,intcnt){if(cnt-1)returnSumweigths;//如没有可选,返回布袋与要求的是否一致elseif(check(Sumweigtha[cnt],cnt-1)){//当前位置放入布袋继续分析data[size].indexcnt;data[size].valuea[cnt];size;returntrue;}elseif(check(Sumweigth,cnt-1)){//当前位置没进包里继续分析returntrue;}returnfalse;}voidprint(){for(inti0;isize;i)coutnumber:data[i].index1 weight:data[i].valueendl;//index1 因为下标是从0开始的}voidsolve(){cinns;for(inti0;in;i)cina[i];if(check(0,n-1))print();elsecoutnot foundendl;}intmain(){solve();return0;}