这道怎么写啊各位(js算法题)

img


输入格式:
输入一个正整数n(1⩽n⩽10 )

输出格式:
输出n×n的往返跑方阵。每行n个数字,每个数字占3位,右对齐。



function sum(n){
    if(1 > n || n > 10) throw new Error("输入一个正整数n(1⩽n⩽10 )")
    var t = 1;
    var c = new Array(n).fill(1).map(_ => new Array(n).fill(1));
    var f = 1;
    for(var i = n-1; i >= 0; i--){
        for(var j = n-1; j >= 0; j--){
            if(f) c[j][i] = t++;
            else c[n-j-1][i] = t++;
        }
        f = !f;
    }
    
    ////////////// 打印输出
    console.log(c.map(e => e.join(" ")).join("\n"))

}

sum(3)
sum(4)
sum(5)

img

有用望采纳

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <script>
        var n = parseInt( window.prompt("输入N:"));
        var arr = new Array();

        var num = 1;//填充的数
        var i = n - 1;//行
        var j = n - 1;//列
        for (var c = 0; c < i; c++) {
            arr[c] = new Array();
        }

        while (j >= 0) {
            
            //向上填充
            while (i >= 0) {
                if (arr[i] == null) {
                    arr[i] = new Array();
                }
                arr[i][j] = num;
                num++;
                i--;
            }
            j--;//列数-1
            i++;//此时i为0
            if (j < 0) {
                break;
            }
            //向下填充
            while (i < n) {
                arr[i][j] = num;
                num++;
                i++;
            }
            j--;//列数减1
            i--;//此时i=n-1
        }
        var html = "";
        for (var x = 0; x < n; x++) {
            for (var y = 0; y < n; y++) {
                if (y == n - 1) {
                    html += arr[x][y]+" <br/>";
                }
                else {
                    html += arr[x][y] +"&nbsp;" ;
                }
            }
        }
        document.write(html);
    </script>
</body>
</html>

img