c_cpp 4 * 4矩阵,从左上角走到右下角,你可以进入4个方向:上,下,左,右。您无法再次访问某个位置。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 4 * 4矩阵,从左上角走到右下角,你可以进入4个方向:上,下,左,右。您无法再次访问某个位置。相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>
using namespace std;

bool is_valid(int i, int j) {
     return i >= 0 && i < 4 && j >= 0 && j < 4;
}

void dfs(int &ways, int len, int i, int j, vector<vector<bool>>& visited) {
     if(len == 4) {
          ways++;
          return;
     }
     if(is_valid(i, j) && visited[i][j] == false) { // cannot change the order of these two statement!!!!!!!
          visited[i][j] = true; dfs(ways, len+1, i-1, j, visited); visited[i][j] = false;
          visited[i][j] = true; dfs(ways, len+1, i+1, j, visited); visited[i][j] = false;
          visited[i][j] = true; dfs(ways, len+1, i, j-1, visited); visited[i][j] = false;
          visited[i][j] = true; dfs(ways, len+1, i, j+1, visited); visited[i][j] = false;
     }
}

int main() {
     int ways = 0, len = 0;
     vector<vector<bool>> visited(4, vector<bool>(4, false));
     dfs(ways, len, 0, 0, visited);
     cout << ways << endl;          // my answer is 40
}

以上是关于c_cpp 4 * 4矩阵,从左上角走到右下角,你可以进入4个方向:上,下,左,右。您无法再次访问某个位置。的主要内容,如果未能解决你的问题,请参考以下文章

2021-07-29:最大路径和。给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角。然后从右下角出发,每一步只能往上或者往左走,再回到左上角。任何一个位置的数字,只能获得

c_cpp [dp] [path] [matrix]具有非负数的2d矩阵/网格中的最小路径和。找到从左上角到右下角的路径,最小化

c_cpp [dp] [path] [matrix]具有非负数的2d矩阵/网格中的最小路径和。找到从左上角到右下角的路径,最小化

洛谷——P1743 矩阵 III

动规讲解基础讲解四——矩阵取数

矩阵(01背包+滚动数组)