#百度笔试# 百度第二题 通过55 哪个大牛知道原因吗?
#include
(5488)#include
using namespace std;
int dx[4] = { -1,0,1,0 }, dy[4] = { 0, 1, 0, -1 };
void dfs(vector>&vec,int i,int j,int n) {
if ( i < 0 || i >= n || j < 0 || j >= n||vec[i][j] == -1||vec[i][j]==1)
return;
vec[i][j] = -1;
for (int k = 0; k < 4; k++) {
dfs(vec, i + dx[k], j + dy[k],n);
}
}
int main() {
int n;
cin >> n;
//cin.ignore();
vector> vec(n,vector(n));
for (int i = 0; i < n; i++)
{
int m;
cin >> m;
for (int j = n-1; j >=0; j--) {
vec[i][j] = m % 10;
m = m / 10;
}
}
int dl = 1;
int i = 0, j = 0;
while (1) {
if (vec[i][j] == 0) {
dfs(vec, i, j, n);
}
if (i == 1 && j == 0)
break;
int tmpi=i;
int tmpj = j;
i += dx[dl];
j += dy[dl];
if (i < 0 || i >= n || j < 0 || j >= n) {
dl = (dl + 1) % 4;
i = tmpi + dx[dl];
j = tmpj + dy[dl];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (vec[i][j] == -1) {
vec[i][j] = 0;
}
else
vec[i][j] = 1;
cout << vec[i][j];
}
cout << endl;
}
return 0;
}
全部评论
你的第二题是什么题?
点赞
送花
回复
分享
发布于 2020-09-14 21:18
我的第二题是 下围棋, 我在想着题中n<1000,是不是我的时间复杂度超了?如果想要优化,哪位大牛知道怎么办吗?
点赞
送花
回复
分享
发布于 2020-09-14 21:39
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务