关键:(1) step的把握。 1,1,2,2,3,3,4,4.
(2) 还有通过 (dx,dy) 控制方向。
vector<vector<int>> res;
int dx = 0, dy = 1;
int step = 1;
int count = 1;
res.push_back(vector<int>{r0, c0});
while (count < R * C) {
dx = 0, dy = 1;
for (int s = 0; s < step; s++) {
r0 += dx;
c0 += dy;
if (r0 >= 0 && r0 < R && c0 >= 0 && c0 < C) {
res.push_back(vector<int>{r0, c0});
count ++;
if (count >= R * C) return res;
}
}
dx = 1, dy = 0;
for (int s = 0; s < step; s++) {
r0 += dx;
c0 += dy;
if (r0 >= 0 && r0 < R && c0 >= 0 && c0 < C) {
res.push_back(vector<int>{r0, c0});
count ++;
if (count >= R * C) return res;
}
}
step ++;
dx = 0, dy = -1;
for (int s = 0; s < step; s++) {
r0 += dx;
c0 += dy;
if (r0 >= 0 && r0 < R && c0 >= 0 && c0 < C) {
res.push_back(vector<int>{r0, c0});
count ++;
if (count >= R * C) return res;
}
}
dx = -1, dy = 0;
for (int s = 0; s < step; s++) {
r0 += dx;
c0 += dy;
if (r0 >= 0 && r0 < R && c0 >= 0 && c0 < C) {
res.push_back(vector<int>{r0, c0});
count ++;
if (count >= R * C) return res;
}
}
step ++;
}
return res;
}
---------------------
作者:负雪明烛
来源:CSDN
原文:https://blog.csdn.net/fuxuemingzhu/article/details/82389223
版权声明:本文为博主原创文章,转载请附上博文链接!