这是一位同学的面试题。典型的DFS,唯一和以前不同的是,我改进了move的方法。
#include <iostream>
#include <string>
#include <queue>
using namespace std;
bool check(const vector<vector<char> > &dict,
const int &row, const int &col) {
return row >= 0 && row < dict.size() && col >= 0 && dict[0].size();
}
bool start_search(const vector<vector<char> > &dict,
const string &key, const int &row, const int &col, int idx) {
//dict[x][y] == key[0]
if (!check(dict, row, col)) {
return false;
}
if (dict[row][col] != key[idx]) {
return false;
}
if (idx == key.size()-1) {
cout << "begin return! " << endl;
return true;
}
for (int i = -1; i <= 1; i++) {
for (int j = -1 ; j <= 1; j++) {
if (i == 0 && j == 0) {
continue;
}
if (start_search(dict, key, row+i, col+j, idx+1)) {