ACM 迭代深搜法 Power Calculus
来源:互联网 发布:华为手机网络诊断 编辑:程序博客网 时间:2024/06/05 08:26
滴,集训第五天打卡。
今天是紫书第七章训练2,感觉难度很大呀...
A和E是迭代深搜法,C是背包我首A的哈哈哈哈后续更新~
这里贴E题..
UVA 1374 Power Calculus
题目大意:给定一个数n,让你求从1至少要做多少次乘除才可以从 x 得到 x^n。
思路: 从小到大枚举深度上限,剪枝:(当每次取最大的两个数相加仍然小于n时要剪枝 。因为以最快的方式增长的话其指数是按照2的幂次增加的,所以当前序列最大的数乘以2^(maxd-d)之后仍小于n,则剪枝 。)
#include<stdio.h> int vis[2010]; int flag,deep,n; void dfs(int pos) { int t; if(pos>deep || (vis[pos]<<(deep-pos))<n || flag) return; //剪枝:如果大于当前限制的深度or当前的数通过自身相乘(即指数相加 最快方式)都不能达到n,停止搜索。 if(vis[pos]==n) { flag=1; return; } for(int i=1;i<=pos;i++) { if(flag) return; t=vis[pos]+vis[i]; //乘法 if(t>0 && t<2000) { vis[pos+1]=t; dfs(pos+1); } t=vis[pos]-vis[i]; if(t>0 && t<2000) //除法 { vis[pos+1]=t; dfs(pos+1); } } } int main() { while(scanf("%d",&n)&&n) { deep=0,flag=0; vis[1]=1; while(!flag) { deep++; dfs(1); } printf("%d\n",deep-1); } return 0; }
当然也可以打表做
#include <stdio.h>int ans[]={0,1,2,2,3,3,4,3,4,4,5,4,5,5,5,4,5,5,6,5,6,6,6,5,6,6,6,6,7,6,6,5,6,6,7,6,7,7,7,6,7,7,7,7,7,7,7,6,7,7,7,7,8,7,8,7,8,8,8,7,8,7,7,6,7,7,8,7,8,8,8,7,8,8,8,8,8,8,8,7,8,8,8,8,8,8,9,8,9,8,9,8,8,8,8,7,8,8,8,8,9,8,9,8,9,9,9,8,9,9,9,8,9,9,9,9,9,9,9,8,9,9,9,8,9,8,8,7,8,8,9,8,9,9,9,8,9,9,9,9,9,9,9,8,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,10,9,10,9,10,9,10,10,10,9,10,10,10,9,10,10,10,9,10,9,10,9,9,9,9,8,9,9,9,9,10,9,10,9,10,10,10,9,10,10,10,9,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,9,10,10,10,9,10,9,9,8,9,9,10,9,10,10,10,9,10,10,11,10,11,10,10,9,10,10,11,10,11,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,11,10,10,10,11,10,11,11,11,10,11,10,11,10,11,10,11,10,11,10,10,10,10,10,10,9,10,10,10,10,10,10,11,10,11,10,11,10,11,11,11,10,11,11,11,10,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,10,11,11,11,10,11,10,11,10,10,10,10,9,10,10,10,10,11,10,11,10,11,11,11,10,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,11,12,11,12,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,12,11,12,11,11,10,11,11,12,11,12,11,11,10,11,11,11,10,11,10,10,9,10,10,11,10,11,11,11,10,11,11,12,11,12,11,11,10,11,11,12,11,12,12,11,11,12,12,12,11,12,11,11,10,11,11,12,11,12,12,12,11,11,12,12,11,12,11,12,11,11,11,12,11,12,11,11,11,12,11,11,11,11,11,11,10,11,11,11,11,11,11,12,11,11,11,12,11,12,12,12,11,12,11,12,11,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,11,12,12,12,11,12,12,12,11,12,12,12,11,12,12,12,11,12,11,12,11,12,11,11,11,11,11,11,10,11,11,11,11,11,11,12,11,12,11,12,11,12,12,12,11,12,12,12,11,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,11,12,12,12,11,12,11,12,11,11,11,11,10,11,11,11,11,12,11,12,11,12,12,12,11,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,11,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,13,12,12,12,13,12,12,12,12,12,12,11,12,12,12,12,12,12,13,12,12,12,13,12,13,12,12,12,13,12,13,12,13,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,13,12,13,12,13,12,13,12,13,12,13,12,13,12,13,13,13,12,13,13,13,12,13,12,13,12,13,13,13,12,13,13,13,12,13,12,13,12,12,12,13,12,13,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,12,12,13,12,13,13,13,12,13,13,13,12,13,12,12,11,12,12,13,12,13,13,13,12};int main(){ int n; while(scanf("%d",&n) == 1 && n) printf("%d\n", ans[n-1]); return 0;}
阅读全文
0 0
- ACM 迭代深搜法 Power Calculus
- Power Calculus
- UVALive - 3621 Power Calculus
- POJ 3134 - Power Calculus
- UVA1374 - Power Calculus
- 1374 - Power Calculus
- UVa 1374 Power Calculus
- UVA 1374 Power Calculus
- UVA - 1374 Power Calculus
- uva 1374 Power Calculus
- Power Calculus(POJ 3134)
- uva 1374 power calculus
- Uva-1347 Power Calculus
- UVALive - 3621 Power Calculus
- LA 3621 Power Calculus .
- poj3134 Power Calculus IDA*
- LA 3621 Power Calculus
- Power Calculus UVA
- RSS——<channel> 元素
- JAVA开发环境的搭建(配置JAVA开发环境)以及使用eclipse从头一步步创建java项目
- 利用php生成xml
- Android学习笔记之图像颜色处理(ColorMatrix)
- 鼠标测试工具Simple_Mouse_Test
- ACM 迭代深搜法 Power Calculus
- 用卷积公式求概率密度时确定积分区间
- 非线性结构——树
- poj2763(树链剖分)
- 远程桌面(服务器)的链接步骤
- 大数除法之估商法源码
- 百练OJ:3865和2677:肿瘤检测
- 移动UI设计:基本类型屏幕
- 选择排序算法(node)