百练+dp or DFS+dp就是记忆化搜索,加个数组记忆
2016-05-02 21:54
369 查看
点击打开链接
///dp[i] = dp[i - 1] + 2 * dp[i - 2] + (dp[ i - 1 ] - dp[i - 2]) ///dp[i - 1]是往北走 ///dp[i - 2] * 2是上一次往北过来的,这一次往东西走都可以,所以*2 ///dp[i - 1] - dp[i - 2]是上次不是北边过来的,只可以走一边(东或者西) #include<stdio.h> #include<stdlib.h> #include<iostream> #include<string.h> #include<cstring> #include<string> #include<math.h> #include<algorithm> #define LL long long #define inf 0x3f3f3f3f #define mod 1e9+7 using namespace std; LL Arr[25]; int main() { Arr[0]=1;Arr[1]=3; int n; for(int i=2;i<=20;i++){ Arr[i]=2*Arr[i-1]+Arr[i-2]; } scanf("%d",&n); printf("%d\n",Arr ); return 0; }
#include<stdio.h> #include<string.h> int a[250][250] = {0}; int sum,n; void dfs(int x,int y,int cur) { if(a[x][y])return; if(cur==n){ sum++; return; } else{ a[x][y] = 1;///典型递归回溯模板。 dfs(x-1,y,cur+1); dfs(x+1,y,cur+1); dfs(x,y-1,cur+1); a[x][y] = 0; } } int main() { scanf("%d",&n); dfs(125,125,0); printf("%d\n",sum); return 0; }
相关文章推荐
- chrome源码分析1:content模型
- Java中多态的实现机制
- android 小技巧
- windows 下VS2015配置opencv
- 深入了解viewport和px
- 堆排序--采用快速排序(利用大堆实现升序,小堆实现降序)
- 给大家推荐一些学习android的书籍(第一篇博客)
- Vector容器介绍(一)
- 《Motion Design for iOS》(八)
- linux清空linux 和history
- fzoj Problem 2190 非提的救赎 【单调栈】
- hdoj 1074 Doing Homework 【状压dp】
- hdoj 1505 City Game 【dp or 单调栈】
- elasticsearch中初步使用filter
- 非常详细到docker学习资料
- 数据结构初学过程中对算法效率度量的理解
- POJ 3254 状压dp
- BZOJ 2342: [Shoi2011]双倍回文 (Manacher+set)
- 【数据结构】二叉树相关操作
- hdoj 1506 Largest Rectangle in a Histogram 【单调栈】