• 马走日字问题


    此类问题会有几种情况:现在列举其中几种1.让我们去求从一个点到另一个点的路径总数;2.列举出从一个点到另一个点的路径(可根据第一种情况的代码修改即可,一般是通过一个二维数组来记录每条路径);3.最短路径(涉及动态规划)

    情况1的示例代码:

    //从(0,0)到(n-1,m-1)的路径总数,n是行数,m是列数,规定只能向右和向上走以及向下走,不能向左走
    //这里可以不需要利用visited来记录是否走过。有点多余了
    #include<iostream> #include<vector> using namespace std; void help(vector<vector<int>>&a, int n, int m, vector<vector<int>>&visited, int &count,int i,int j){ visited[i][j] = 1; if (i == n - 1 && j == m - 1){ count++; visited[i][j] = 0; return; } else{ if (i + 1 < n&&j + 2 < m&&visited[i + 1][j + 2] == 0){ help(a, n, m, visited, count, i + 1, j + 2); } if (i + 2 < n&&j + 1 < m&&visited[i + 2][j + 1] == 0){ help(a, n, m, visited, count, i + 2, j + 1); } if (i - 1 >= 0 && j + 2 < m&&visited[i - 1][j + 2] == 0)help(a, n, m, visited, count, i - 1, j + 2); if (i - 2 >= 0 && j + 1 < m&&visited[i - 2][j + 1] == 0)help(a, n, m, visited, count, i - 2, j + 1); } visited[i][j] = 0; } int main(){ vector<vector<int>>board(4, vector<int>(4, 0)); vector<vector<int>>visited(board); int count = 0; help(board, board.size(), board[0].size(), visited, count, 0, 0); cout << count << endl; system("pause"); return 0; }
  • 相关阅读:
    python写的百度贴吧相册下载
    C#的图片拼接
    删除目录下的所有".svn"文件
    centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
    代理的分类简述特点
    GCC 特性整理
    纯C 实现 strpos substr strspilt str_trim
    编译putty 源码去掉 Are you sure you want to close this session? 提示
    OpenWrt tcpdump 抓包
    安卓 打飞机 app 开发 第一篇
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9301449.html
Copyright © 2020-2023  润新知