题解 | #蛇形矩阵#
蛇形矩阵
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();
}
}
}
新手一枚勿喷。
叮咚买菜工作强度 229人发布