回溯法求解背包个数问题
来源:互联网 发布:2017网络灰色赚钱项目 编辑:程序博客网 时间:2024/04/30 07:14
华电北风吹
天津大学认知计算与应用重点实验室
2016-07-03
每个背包最大容量20,有N个物品,问至少需要多少个背包才能装完所有的物品?
输入描述:
第一行物品个数N,第二行N个整数,表示各个物品重量。物品个数小于等于10,物品重量小于等于10.
解题思路:
回溯法求解。不知道有没有更好的思路。。。
#include <iostream>#include <fstream>using namespace std;#define LENGTH 11#define LIMITE 20int stoneWeight[LENGTH];int rounState[5];bool func(int stoneIndex, const int& SumRoundNum, const int& N){ if (stoneIndex == N) return true; int weight = stoneWeight[stoneIndex]; for (int i = 0; i < SumRoundNum; i++) { if (rounState[i] + weight <= LIMITE) { rounState[i] += weight; if (func(stoneIndex + 1, SumRoundNum, N)) return true; else rounState[i] -= weight; } } return false;}int main(){ ifstream in(".\\input.txt"); cin.rdbuf(in.rdbuf()); int N, sum = 0; cin >> N; for (int i = 0; i < N; i++) { cin >> stoneWeight[i]; sum += stoneWeight[i]; } int count = sum / LIMITE; while (true) { memset(rounState, 0, sizeof(rounState)); if (func(0, count, N)) { cout << count << endl; break; } else { count++; } } return 0;}
0 0
- 回溯法求解背包个数问题
- 回溯法求解0/1背包问题
- 回溯法求解0-1背包问题
- 回溯法求解01背包问题
- 0/1背包问题-----回溯法求解
- 回溯法求解01背包问题
- 背包问题 求解个数
- 0-1背包问题简单实例(回溯法求解…
- 回溯法——求解0-1背包问题
- 用回溯法求解0/1背包问题
- 回溯法-求解装载问题(类似0-1背包)
- 回溯法 背包问题
- 回溯法---->背包问题
- 贪心法和回溯法 求解“背包、0/1背包问题”——Java 实现
- 回溯法求解TSP问题
- 回溯法求解迷宫问题
- 用回溯法求解0—1背包问题,并输出问题的最优解
- python回溯法求解0-1背包问题的最优值
- Python 语言及其应用 Chapter_4_Exercise
- 自定义 UISwitch
- 六月英语总结
- hive总结
- 指派问题与匈牙利解法
- 回溯法求解背包个数问题
- IMF SparkSQLwithJoin 测试sparksql
- hdu 5677(manacher + 二维背包)
- MarkWord - 可发布到CSDN的Markdown编辑器(支持图片同步)
- 安卓与H5之间的调用,本地模版动态刷新数据
- 用ISO C++实现自己的信号槽(Qt另类学习)
- TVP5150视频解码芯片 调试总结
- java与Groovy的互调用 实现在当前目录及其子目录删除指定名称的目录
- 操作系统知识要点总结