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背包+滚动数组)