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个方向:上,下,左,右。您无法再次访问某个位置。的主要内容,如果未能解决你的问题,请参考以下文章