zoukankan      html  css  js  c++  java
  • 马走日字问题

    此类问题会有几种情况:现在列举其中几种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; }
  • 相关阅读:
    我的第一篇博客
    1.2 位于Shell脚本第一行的#!
    1.1 一个简单的脚本
    JDK与CGlib动态代理的实现
    解决Sublime Text3中文显示乱码问题
    多线程讲解
    (转)Spring中@Async用法总结
    (转)spring boot注解 --@EnableAsync 异步调用
    Spring Boot中的注解
    (转)如何用Maven创建web项目(具体步骤)
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9301449.html
Copyright © 2011-2022 走看看