POJ 3628 Bookshelf 2 题解
2017-06-01 10:01
162 查看
本题解法非常多,由于给出的数据特殊性故此能够使用DFS和BFS,也能够使用01背包DP思想来解。
由于一般大家都使用DFS,这里使用非常少人使用的BFS。缺点是比DFS更加耗内存,只是长处是速度比DFS快。
当然也比DFS难写点:
由于一般大家都使用DFS,这里使用非常少人使用的BFS。缺点是比DFS更加耗内存,只是长处是速度比DFS快。
当然也比DFS难写点:
int N, B; int Height[21]; inline int mMin(int a, int b) { return a > b? b : a; } inline int mMax(int a, int b) { return a < b? b : a; } int bfs() { vector<int> vStk; vStk.push_back(0); int id = 0; int mh = INT_MAX; while (id < N) { for (int i = (int)vStk.size() - 1; i >= 0 ; i--) { int h = vStk[i] + Height[id]; if (h >= B) mh = mMin(mh, h-B); vStk.push_back(h); }//缺点。会消耗大量的内存。最后vector会很大,长处,速度比dfs快 id++; } return mh; } int main() { while (scanf("%d %d", &N, &B) != EOF) { for (int i = 0; i < N; i++) { scanf("%d", &Height[i]); } printf("%d\n", bfs()); } return 0; }
相关文章推荐
- Round 3 Bookshelf 2 POJ - 3628 -搜索(假背包)
- POJ 3628 Bookshelf 2(0-1背包)
- POJ 3628 Bookshelf 2 (01背包)
- poj 3628 Bookshelf 2( 0-1背包。)
- POJ - 3628 Bookshelf 2
- 简单01背包问题求解 POJ:3628 Bookshelf 2
- poj3628 Bookshelf 2(0/背包)
- POJ 3628 Bookshelf 2
- poj 3628 - Bookshelf 2
- POJ 3628 Bookshelf 2 DFS 0-1背包问题
- POJ 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- POJ 3628-Bookshelf 2
- POJ 3628 Bookshelf 2 DFS 0-1背包问题
- poj 3628 Bookshelf 2(01背包入门或者dfs)
- POJ 3628 Bookshelf 2(DP:01背包)
- poj 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- POJ 3628 Bookshelf 2 0-1背包 or DFS 水题
- POJ 3628 Bookshelf 2 0-1背包 or DFS 水题