题解 | #蛇形矩阵#

蛇形矩阵

http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

蛇形矩阵

解题思路

每一行都是一个等差数列,行与行之间也存在关系。所以我们只需求出第一个等差数列就可以得到其他行。 我们看第一行 a1=1,a2=3,a3=6, ... 利用中学知识 等差数列 得到 an = n(1+n)/2, 但是 j列从零开始,所以 aj = (j+1)(j+2)/2;

在邻行同列情况下,我们有 a[i][j] = a[i-1][j]+i+j; 这个可以证明; 即

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] a = new int[n][n];
        
        for(int j=0;j<n;j++){//初始化第一行
            a[0][j] = (j+1)*(j+2)/2;
        }
        for(int i=1;i<n;i++)// 每行值求解
        {
            for(int j=0;j<n-i;j++){
               a[i][j] = a[i-1][j]+i+j;
            }
        }
        for(int i=0;i<n;i++)// 输出结果
        {
            for(int j=0;j<n-i;j++){
               System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
    }
}

新手一枚勿喷。

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务