JavaScript写法
可以使用如下方式创建0的二维数组,而不用担心fill可能造成一整列都复制的情况.
let s = new Array(m).fill(0);
for(let i in s){
s[i] = new Array(n).fill(0);
}
下面是完整代码
let m, n;
process.stdin.on(‘readable’, function(){
let c = process.stdin.read();
if (c) {
[m, n] = c.toString().split(‘ ‘).map((x)=>{return parseInt(x)});
}
})
let dx = [0, 1, 0, -1];
let dy = [1, 0, -1, 0];
process.stdin.on(‘end’, function(){
let s = new Array(m+2).fill(0);
for(let i in s){
s[i] = new Array(n+2).fill(0);
}
s[1][n+1] = s[m+1][n] = s[m][0] = s[0][1] = 1;
let cnt = 1, dir = 0, x = 1, y = 0;
while(cnt <= m * n){
if (s[x+dx[dir]][y+dy[dir]] !== 0){
dir = (dir + 1) % 4;
}
x += dx[dir], y += dy[dir];
s[x][y] = cnt ;
}
for(let i=1;i<=m;i){
let str = ‘’;
for (let j=1;j<=n;j++){
if (j !== 1) str += ” “;
str += s[i][j];
}
console.log(str);
}
})