UVA - 1374 Power Calcul
2015-07-28 19:55
10 查看
//今天上午优化了一上午的UVA1343, 下午看这个题, 最后也是看的网上的代码。。。。想自己一个一个的做,但是训练计划太紧了。很无奈的感觉。感觉这个题还是需要比较强的思维逻辑能力啊。自己做应该是不行了。。
#include<cstdio> #include<iostream> #include<string.h> #include<algorithm> using namespace std; const int maxn = 2000; int n, res[maxn]; int cnt[maxn]; int k[32]; int maxd; int dfs(int d, int cur) { if(d==maxd && cur==n) return true; if(d >= maxd || cur > 1500) return false; if(cur * k[maxd-d] < n) return false; res[d] = cur; cnt[cur] = 1; for(int i = 0; i <=d; ++i) { int tmp = res[i] + cur; if(!cnt[tmp]) { if(dfs(d+1, tmp)) return true; } tmp = abs(cur-res[i]); if(!cnt[tmp]) { if(dfs(d+1, tmp)) return true; } } cnt[cur] = 0; return false; } int main() { k[0] = 1; for(int i = 1; i <= 31; ++i) k[i] = k[i-1] * 2; while(scanf("%d", &n) == 1 && n) { for(maxd = 0; ; ++maxd) { memset(cnt,0,sizeof(cnt)); if(dfs(0, 1)) { printf("%d\n", maxd); break;} } } }
相关文章推荐
- Android官网中关于service 介绍的重要记录笔记
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
- 暑假集训第三周 STL D - 排列
- CentOS 最小化安装后初始化网络
- POJ 1784 Charlie's Change 记录路径的多重背包
- Python学习笔记-协程
- 1~9个数字组成的前i个数能被i组成
- MySQL导入.sql文件及常用命令
- [转] Oracle analyze 命令分析
- 暴力求解——最大乘积 Maximum Product,UVa 11059
- 【整理】WDK 和 DDK异同
- iOS开发实现页面间的数据传递
- zookeeper配置
- Bundle saveInstanceState的作用与重写onSaveInstanceState方法
- Leetcode# 67 Add Binary
- 输出菱形的*塔及字母塔问题
- How to convert Windows 7 on MBR/BIOS to GPT/UEFI
- Linux查看网络状态
- 面对对象的三大特征