當前位置:編程學習大全網 - 編程軟體 - c++編程,求大神幫忙解答

c++編程,求大神幫忙解答

C++代碼如下:

#include <bits/stdc++.h> // C++萬能頭文件

using namespace std;

int dx[4] = {-1, 1, 0, 0};

int dy[4] = {0, 0, -1, 1};

int n, m;

char mat[3000][3000]; // 字符矩陣

int dp[3000][3000][6]; // 記憶化搜索

string s = "IAKCSP";

int dfs(int x, int y, int i) { // 當前位置出發,可以匹配s[i:5]的個數

if (i == 5)

return dp[x][y][i] = 1; // 匹配到結尾,返回1個可行解

if (dp[x][y][i] != -1)

return dp[x][y][i];

dp[x][y][i] = 0;

for (int k = 0; k < 4; ++k) {

int nx = x + dx[k], ny = y + dy[k];

if (nx >= 0 && nx < n && ny >= 0 && ny < m

&& mat[nx][ny] == s[i + 1])

dp[x][y][i] += dfs(nx, ny, i + 1);

}

return dp[x][y][i];

}

int main() {

memset(dp, -1, sizeof(dp)); // 初始化為-1

cin >> n >> m;

for (int i = 0; i < n; ++i) {

for (int j = 0; j < m; ++j)

cin >> mat[i][j];

}

int ans = 0;

for (int i = 0; i < n; ++i) {

for (int j = 0; j < m; ++j)

if (mat[i][j] == s[0])

ans += dfs(i, j, 0);

}

cout << ans << "\n";

return 0;

}

g++編譯通過,且通過測試用例,望采納~

  • 上一篇:如何在Windows環境下運行Python腳本
  • 下一篇:邢臺學院什麽專業最好
  • copyright 2024編程學習大全網