#百度笔试# 百度第二题 通过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

相关推荐

可可可可可_:nb啊,看样子是专科玩了几年随便专升本了个民办,又玩了两年。你这能找到我吃
点赞 评论 收藏
分享
暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务