Cubes(DFS+剪枝)
来源:互联网 发布:最火的网络用语 编辑:程序博客网 时间:2024/05/17 04:46
题意:给一个数N,求N最少由多少个数的立方构成,并输出这些数。
做法:DFS + 剪枝,剪枝的边界很很很重要!
#include <stdio.h>int cub[400];int ans[300];int tp[300];int n;int sum = 0x3f3f3f3f; //个数void dfs(int left, int depth, int pos) { if(left == 0 && depth < sum) { //成立则更新ans数组 sum = depth; for(int i = 0; i < depth; i++) ans[i] = tp[i]; return; } if(depth +1 >= sum) return; //等于号是多么的重要orz.... for(int i = pos; i >= 1; i--) { if(cub[i] > left) continue; if(depth + left / cub[i] >= sum) return; //等于号是多么的重要orz.... tp[depth] = i; dfs(left - cub[i], depth+1, i); //下一次从第i个数开始搜 }}int main() { for(int i = 0; i < 400; i++) cub[i] = i * i * i; scanf("%d", &n); dfs(n, 0, 366); printf("%d\n", sum); for(int i = 0; i < sum; i++) { if(i > 0) putchar(' '); printf("%d", ans[i]); } putchar('\n');}
阅读全文
0 0
- Cubes(DFS+剪枝)
- poj2741 Colored Cubes(dfs)
- DFS(剪枝)_hdu_1010
- Friends(DFS+剪枝)
- hdu5113(dfs+剪枝)
- hdu1010(dfs+剪枝)
- dfs+剪枝(hdu1010)
- 等边三角形(dfs剪枝)
- HDU5937(DFS+剪枝)
- hdu1010(dfs+剪枝)
- Codeforces 525E Anya and Cubes【折半枚举法+剪枝Dfs】好题~
- POJ2248Addition Chains(dfs+剪枝)
- hdu 1010 (DFS+剪枝)
- poj1190生日蛋糕(dfs+剪枝)
- HDOJ(1010)DFS+剪枝
- Zipper(poj2192)dfs+剪枝
- Sticks(DFS+剪枝+贪心)
- POJ-2078(dfs + 剪枝)
- n & (n-1) 和 n & (-n)
- Nginx 反向代理 如何在web应用中获取用户ip
- java23种设计模式之装饰器模式
- Codeforces Round #409 (Div. 2)
- thinkphp3.13项目搭建
- Cubes(DFS+剪枝)
- Python学习(列表)
- 计算机视觉与机器人控制:基础概述
- 2.2.4—单链表—Remove Duplicates from Sorted List
- Cutting (暴力 + 滚动哈希判字符串匹配)
- MySQL 5.7主从复制
- Exams(二分求左界+贪心)
- 事件委托
- 大组合数取余模板