题解 | #蛇形矩阵#
蛇形矩阵
http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int size = scan.nextInt(); for(int i=0;i<size;i++){ solution(i,size); } } } public static void solution(int n,int size){ //输出每一行的方法/ int first = getTheFirst(n);//第一个数 int len = getLineLength(n,size);//得到了应该输出的长度 int dif = getDif(n); for(int i=0;i<len;i++){ //开始输出 System.out.print(first+" "); first +=(dif++); } System.out.println();//每次输出一梭子就换行 } public static int getLineLength(int lineNumber,int size){ return size - lineNumber;//得到了每一行有多少个数 } public static int getTheFirst(int lineNumber){ int res = 1; if(lineNumber==0) return res; for(int i=0;i<=lineNumber;i++){ res+=i; } return res;//得到了每一行的第一位数字 从0开始数的行数 } public static int getDif(int n){ //得知每一行的第一个元素跨步多少 return n+2; } }