Untitled
Anonymous
c_cpp
05/01/2026 10:02 AM
1.8 KB
13
Indexable
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
using namespace std;
int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
void BackTracking(const string& s, int x, int y, int idx, const vector<string>& words, vector<vector<bool>>& visited) {
if (words[x][y] != s[idx]) {
return;
}
visited[x][y] = true;
if (idx == s.size() - 1) {
cout << "true";
exit(0);
}
for (int i = 0; i < 8; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < words.size() && ny >= 0 && ny < words[nx].size() && !visited[nx][ny]) {
BackTracking(s, nx, ny, idx + 1, words, visited);
}
}
visited[x][y] = false;
}
int main() {
string s;
cin >> s;
vector<string> words;
string tmp = "";
while (true) {
cin >> tmp;
if (tmp != ".") {
words.push_back(tmp);
}
else {
break;
}
}
vector<vector<bool>> visited(words.size(), vector<bool>(words[0].size(), false));
for (int i = 0; i < words.size(); i++) {
for (int j = 0; j < words[i].size(); j++) {
if (words[i][j] == s[0]) {
BackTracking(s, i, j, 0, words, visited);
}
}
}
cout << "false";
return 0;
}Editor is loading...
Leave a Comment