度小满0920笔试2AC答案 基础架构研发工程师
两道比较常规的题,不过细节上还是要好好处理一下。本人代码比较粗糙,欢迎大家多多指教~
仅作交流,祝愿大家秋招顺利!
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <unordered_map>
#include <queue>
#include <math.h>
using namespace std;
int main()
{
int n;
cin >> n;
vector<string> strings(n);
for (int i = 0; i < n; i++)
{
cin >> strings[i];
}
vector<bool> flags(3);
vector<char> par(3);
int count = 0;
for (auto str : strings)
{
if (str.length() % 3 != 0)
{
cout << "No" << endl;
continue;
}
count = 0;
for (int i = 0; i < 3; i++)
{
flags[i] = false;
par[i] = str[i];
}
for (int i = 3; i < str.length(); i++)
{
if (str[i] == par[i % 3])
{
continue;
}
if (!flags[i % 3])
{
flags[i % 3] = true;
count ++;
}
}
if (count <= 1)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
return 0;
} #include <iostream>
#include <vector>
#include <queue>
using namespace std;
int bfs(vector<string> grid)
{
vector<vector<char>> direct{{1, 0}, {-1, 0}, {0, -1}, {0, 1}};
queue<vector<int>> que_;
int hei = grid.size();
int wid = grid[0].length();
int result = -1;
vector<vector<int>> visited(hei, vector<int>(wid, -1));
for (int i = 0; i < hei; i++)
{
for (int j = 0; j < wid; j++)
{
if (grid[i][j] == '@')
{
que_.push({i, j, 0});
visited[i][j] = 0;
}
}
}
while (!que_.empty())
{
auto cur = que_.front();
que_.pop();
if (cur[0] == 0 || cur[0] == hei - 1 || cur[1] == 0 || cur[1] == wid - 1)
{
if (cur[2] < result || result == -1)
{
result = cur[2];
}
continue;
}
for (int i = 0; i < 4; i++)
{
int next_y = cur[0] + direct[i][0];
int next_x = cur[1] + direct[i][1];
int last_time = cur[2];
if (visited[next_y][next_x] != -1 && visited[next_y][next_x] <= last_time + 1)
{
continue;
}
visited[next_y][next_x] = last_time + 1;
if (grid[next_y][next_x] == '.')
{
que_.push({next_y, next_x, last_time});
}
else if (grid[next_y][next_x] == '*')
{
que_.push({next_y, next_x, last_time + 1});
}
}
}
return result;
}
int main()
{
int t, n, m;
cin >> t;
vector<vector<string>> grids(t);
for (int i = 0; i < t; i++)
{
cin >> n;
cin >> m;
grids[i].resize(n);
for(int j = 0; j < n; j++)
{
cin >> grids[i][j];
}
}
for (auto grid : grids)
{
cout << bfs(grid) << endl;
}
return 0;
}
查看6道真题和解析
智元机器人成长空间 174人发布