HDU 2563 统计问题

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

在一无限大的二维平面中,我们做如下假设: 
1、  每次只能移动一格; 
2、  不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走); 
3、  走过的格子立即塌陷无法再走第二次;

求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。

Input

首先给出一个正整数C,表示有C组测试数据 
接下来的C行,每行包含一个整数n (n<=20),表示要走n步。 

Output

请编程输出走n步的不同方案总数; 
每组的输出占一行。 

Sample Input

  1. 2
  2. 1
  3. 2

Sample Output

  1. 3
  2. 7
  1. /*/
  2. 中文题,有点类似以前做过的小蜜蜂那题,规定一个方向后只能沿着三个方向去移动了。
  3.  
  4. 所以每次移动只有3种方向可以走,而且还要标记是否已经走过这条路,所以思路很清楚直接DFS。
  5.  
  6. 但是DFS会TLE,输入的数字在1~20,数据不多,直接打表。
  7.  
  8. AC代码:
  9. /*/
  1. #include"map"
  2. #include"cmath"
  3. #include"string"
  4. #include"cstdio"
  5. #include"vector"
  6. #include"cstring"
  7. #include"iostream"
  8. #include"algorithm"
  9. using namespace std;
  10. typedef long long LL;
  11. const int MX=202;
  12. #define memset(x,y) memset(x,y,sizeof(x))
  13. #define FK(x) cout<<"【"<<x<<"】"<<endl
  14.  
  15. int step,ans;
  16. bool vis[MX][MX];
  17. int ans2[22]= {0,3,7,17,41,99,239,577,1393,3363,8119,19601,47321,114243,275807,665857,1607521,3880899,9369319,22619537,54608393,0};
  18. //因为DFS全部计算后会超时,而且输入只有1-20,所以直接打出全部的数表
  19.  
  20. void DFS(int dir,int x,int y,int tot) {
  21. if(tot==step) { //如果步数已经达到了就计数。
  22. // FK("YES"<<x<<","<<y<<","<<tot); //确认
  23. ans++;
  24. return ;
  25. }
  26. for(int i=1; i<=3; i++) {
  27. if(i==1)x++; //每种情况对应的位移。
  28. if(i==2)y++;
  29. if(i==3)x--;
  30. if(!vis[x][y]) {
  31. vis[x][y]=1;//标记已经塌陷的路
  32. tot++;
  33. DFS(i,x,y,tot);
  34. vis[x][y]=0;
  35. tot--;
  36. }
  37. if(i==1)x--;
  38. if(i==2)y--;
  39. if(i==3)x++;
  40. }
  41. }
  42.  
  43. int main() {
  44. int T,x;
  45. scanf("%d",&T);
  46. while(T--) {
  47. scanf("%d",&x);/*这里是打表之后加上的*/
  48. // for(step=1; step<=20; step++) {
  49. // ans=0;
  50. // memset(vis,0);
  51. // vis[100][100]=1;//起点已经塌陷
  52. // for(int i=1; i<=3; i++) {
  53. // int xx=100,yy=100;//起点开始,向三个可行方向去深搜
  54. // if(i==1)xx++;
  55. // if(i==2)yy++;
  56. // if(i==3)xx--;
  57. // vis[xx][yy]=1;//标记路已经塌陷
  58. // DFS(i,xx,yy,1);
  59. // vis[xx][yy]=0;
  60. //
  61. // }
  62. printf("%d\n",ans2[x]);
  63. // }
  64. }
  65. return 0;
  66. }

  

ACM: HDU 2563 统计问题-DFS+打表的更多相关文章

  1. HDU 2563 统计问题 (DFS + 打表)

    统计问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. HDU 2563 统计问题(递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=2563 将向上移的步数设为a[n],将向左右移的步数设为b[n],有a[n]=a[n-1]+b[n-1 ...

  3. HDU 2563 统计问题 (递推)

    A - 统计问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  4. [ACM] hdu 1251 统计难题 (字典树)

    统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...

  5. hdu 2510 符号三角形 (DFS+打表)

    符号三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. hdu 2563 统计问题

    统计问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  7. HDU 2563 统计问题(递归,思维题)

    统计问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. HDU 2586 How far away(dfs+邻接表)

    How far away [题目链接]How far away [题目类型]dfs+邻接表 &题意: 题目大意:一个村子里有n个房子,这n个房子用n-1条路连接起来,接下了有m次询问,每次询问 ...

  9. hdu 4707 Pet(DFS水过)

    http://acm.hdu.edu.cn/showproblem.php?pid=4707 [题目大意]: Lin Ji 的宠物鼠丢了,在校园里寻找,已知Lin Ji 在0的位置,输入N D,N表示 ...

随机推荐

  1. .net学习笔记----有序集合SortedList、SortedList<TKey,TValue>、SortedDictionary<TKey,TValue>

    无论是常用的List<T>.Hashtable还是ListDictionary<TKey,TValue>,在保存值的时候都是无序的,而今天要介绍的集合类SortedList和S ...

  2. vim、gvim加载文件慢

    1. strace -f -T -o vim.strace vim 2. vim --startuptime "vim-time.txt" 3. gvim -f

  3. markdown编辑器使用建议

    markdown在线编辑器: https://stackedit.io/editorhttp://dillinger.io/ windows 下建议使用 MarkdownPad linux 下建议使用 ...

  4. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  5. node 初识

    跟随startup engineering 已经到了week2了,目前为止课程都没有详细介绍node,恐怕以后也不会讲得太细,只是罗列出了一堆阅读材料供你自学.花了点时间阅读些许,在此做个墨迹. Ho ...

  6. Linux發送郵件

    1.直接使用shell當編輯器 [root@phburdb1 mail]# mail -s "Hello World" juncai.chen@innolux.comHello j ...

  7. 向Word模板中填充数据

    现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等.我们只需要将这些指 ...

  8. Zigzag convert

    public static String Convert(String s,int row) { char[] c=s.toCharArray(); int len=s.length(); Strin ...

  9. 【SSH】 之 Struts2环境搭建及简单应用开发

    在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要 ...

  10. SQLServer批量创建有规则的数据

    根据需求要生成从kkk001,kkk002开始的100个递增账号 手插要死人的,用SQL脚本轻松完成: declare @a int ) ) begin ) ) end declare:申明变量, @ ...