#include <iostream>
#include<queue>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool back_track(vector<vector<char>>& data, string& line,int cnt,int i,int j)
{
if (data[i][j]!=line[cnt])
{
return false;
}
if (line.size()-1==cnt)
{
return true;
}
char tmp = data[i][j];
data[i][j] = 0;
cnt++;
if ((i>0&& back_track(data, line, cnt, i-1, j) )
||(j>0&&back_track(data, line, cnt, i, j-1))
||(i<data.size()-1&& back_track(data, line, cnt, i+1, j))
||(j<data[0].size()-1&& back_track(data, line, cnt, i, j+1)))
{
return true;
}
data[i][j] = tmp;
return false;
}
bool exist(vector<vector<char>>& data, string line)
{
for (int i = 0; i < data.size(); i++)
{
for (int j = 0; j < data[0].size(); j++)
{
if (back_track(data, line,0,i,j))
{
return true;
}
}
}
return false;
}
int main()
{
vector<vector<char>> data =
{
{'A', 'B', 'C', 'E'} ,
{'S', 'F', 'C', 'S'},
{'A', 'D', 'E', 'E'}
};
string line; cin >> line;
cout << exist(data, line)<<endl;
return 0;
}
2020-09-08小米笔试
最新推荐文章于 2023-06-25 09:55:29 发布