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

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务