当前位置:   article > 正文

动态规划练习题-16(踩方格)_踩方格 计蒜客

踩方格 计蒜客
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a.    每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b.    走过的格子立即塌陷无法再走第二次;c.    只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。
还是一道递归式水题,当在(x,y)点上时只有三种选择,细节上注意通过数组记录该点是否来过,最后要记得回复为0
  1. #include<iostream>
  2. #include<string>
  3. #include<string.h>
  4. using namespace std;
  5. int a[50][25];
  6. int f(int x,int y,int z)
  7. {
  8. int b=0;
  9. if(a[x][y]==1){return 0;}走过此地返回0
  10. if(z==0){return 1;}//走完步数时返回1
  11. if(a[x][y]==0) {a[x][y]=1;}
  12. b=f(x+1,y,z-1)+f(x,y+1,z-1)+f(x,y-1,z-1);//三种递归选择
  13. a[x][y]=0;//恢复
  14. return b;
  15. }
  16. int main()
  17. {
  18. int n,k;
  19. memset(a,0,sizeof(a));
  20. cin>>n;
  21. k=f(1,25,n);
  22. cout<<k;
  23. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/208930
推荐阅读
相关标签
  

闽ICP备14008679号