2563:统计问题
2015-09-19 22:27
447 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2563
方法一:dfs打表
思路:方法一比较流氓,完全是利用了数据小这一点,不过也算是锻炼一下dfs吧,一看题,整个题目叙述简直就是迷宫题的翻版啊有木有,不假思索直接dfs了,然后跪了。首先,dfs速度太慢,必然超时;此外这里的迷宫的起点选择要注意,选择在迷宫矩阵的正中央,由于n不会超过20,矩阵开到40*40就可以保证左右均可以走,否则会造成数组越界;还有,如果按照我的写法,需要把起点也要标记上,否则会走回原点。
难点:dfs的改写
注意:主函数内注释掉的部分是dfs主体部分,由于只要dfs存在就会超时,因此可耻地直接打表了。
方法二:递推
思路:这个方法是比较主流的方法,代码实现也比较简单,时间上也是可以允许的,但是思路还是没有搞懂,附思路链接:
http://www.cnblogs.com/cchun/archive/2012/02/15/2520236.html
难点:递推关系式的构建,代码实现分分钟
方法一:dfs打表
思路:方法一比较流氓,完全是利用了数据小这一点,不过也算是锻炼一下dfs吧,一看题,整个题目叙述简直就是迷宫题的翻版啊有木有,不假思索直接dfs了,然后跪了。首先,dfs速度太慢,必然超时;此外这里的迷宫的起点选择要注意,选择在迷宫矩阵的正中央,由于n不会超过20,矩阵开到40*40就可以保证左右均可以走,否则会造成数组越界;还有,如果按照我的写法,需要把起点也要标记上,否则会走回原点。
难点:dfs的改写
注意:主函数内注释掉的部分是dfs主体部分,由于只要dfs存在就会超时,因此可耻地直接打表了。
#include<cstdio> #include<iostream> #include<cmath> using namespace std; const int MAX = 100; int num,n; int dir[3][2] = {{1,0},{-1,0},{0,1}}; int book[MAX][MAX] = {0}; void dfs(int x,int y,int step) { int dx,dy; if(step == n) { //cout<<x<<" "<<y<<endl; num++; return; } book[50][0] = 1; for(int i = 0;i < 3;i++) { dx = x+dir[i][0]; dy = y+dir[i][1]; if(book[dx][dy] == 1) continue; book[dx][dy] = 1; dfs(dx,dy,step+1); book[dx][dy] = 0; } } int main() { int t; int ans[25] = {0,3,7,17,41,99,239,577,1393,3363,8119,19601,47321,114243,275807,665857,1607521,3880899,9369319,22619537,54608393}; /*for(n= 1;n <= 20;n++) { book[MAX][MAX] = {0}; num = 0; dfs(50,0,0); ans = num; cout<<ans <<" "; }*/ while(cin>>t) { while(t--) { cin>>n; cout<<ans <<endl; } } }
方法二:递推
思路:这个方法是比较主流的方法,代码实现也比较简单,时间上也是可以允许的,但是思路还是没有搞懂,附思路链接:
http://www.cnblogs.com/cchun/archive/2012/02/15/2520236.html
难点:递推关系式的构建,代码实现分分钟
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int getNum(int x) { if(x == 1) return 3; else if(x == 0) return 1; else return 2*getNum(x-1)+getNum(x-2); } int main() { int t,n; while(cin>>t) { while(t--) { cin>>n; cout<<getNum(n)<<endl; } } }
相关文章推荐
- iOS:沙盒、偏好设置、归档、解归档
- handler通信机制
- 2015 ACM/ICPC Asia Regional Shenyang Online(1006)
- 同时支持三个MySQL+SQLite+PDO的PHP数据库类
- boost asio
- JavaEE系列之(一)JSP基础知识详解
- 内部存储 openFileInputStream openFileOutputStream
- 初心莫负
- Minimum Size Subarray Sum
- Note On <Beginning ASP.NET 3.5> Chp 10 & <Professional ASP.NET 3.5 SP1 Edition> Chp 19
- MySQL数据库的操作基础
- c#
- android
- 12306订票系统好像不能用,不过用手机买到票了,嘿嘿
- 地图API文档
- 热敏打印机驱动研究
- 冒泡排序小结
- Java记录 -40- 定义常量最佳方法
- redis 安装 以及php扩展安装
- LintCode 比较字符串