LA3621(dfs)
2016-03-17 21:02
441 查看
题目大意:
已知n,求x最少经过多少次的乘除法可以使得达到x ^n
思路:
因为可以乘除,所以要进行回溯
dfs
用一个num表示当前步数
用step表示最多多少步
代码:
已知n,求x最少经过多少次的乘除法可以使得达到x ^n
思路:
因为可以乘除,所以要进行回溯
dfs
用一个num表示当前步数
用step表示最多多少步
代码:
#include <iostream> using namespace std; #include <cstring> #include <algorithm> #include <stdio.h> const int MAXN = 1010; const int INF = 0x3f3f3f3f; int arr[MAXN],num; int dfs(int n,int step) { if(num > step) return 0; if(arr[num] == n) return 1; if(arr[num] << (step - num) < n) return 0; for(int i = 0; i <= num; i++) { num++; arr[num] = arr[num - 1] + arr[i]; if(arr[num] <= 10000 && dfs(n,step)) return 1; arr[num] = arr[num - 1] - arr[i]; if(arr[num] > 0 && dfs(n,step)) return 1; num--; } return 0; } int main() { int n; while(scanf("%d",&n) != EOF && n) { int i; for(i = 0;;i++) { arr[num = 0] = 1; if(dfs(n,i)) break; } printf("%d\n",i); } return 0; }
相关文章推荐
- 拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布
- debug实战:进程Hang+High CPU
- 四则运算(2.0)
- nodejs错误:ld: library not found for -lgcc_s.10.5 clang: error: linker command failed with exit code 1 (use -v to see invocation)
- 手工部署项目到tomcat
- Java Semaphore and Condition Note
- Python nltk自然语言处理基本资料
- iOS 通讯录排序
- Java中操作逻辑运算符时进行“短路”测试
- 【Chromium中文文档】Web安全研究
- 堆栈和堆栈大小
- [国嵌攻略][155][I2C用户态驱动设计]
- Http的定义及其基本概念介绍
- ubuntu下自动安装arm-linux-gcc和arm-linux-g++
- Http的定义及其基本概念介绍
- Http的定义及其基本概念介绍
- “零”
- 模板特殊化(Template specialization)http://blog.csdn.net/fingding/article/details/32079289
- 解决:Eclipse调试进不了maven第三方包的源代码,多图亲测可用
- About MMDevice API (MSDN文档理解)