题解 | #蛇形矩阵#发现数字规律,直接输出#java
蛇形矩阵
http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
直接按规律逐行输出 每第i行的起始数字为:上一行 + i; 行内每第j个数依次增加量为:j + i + 1;
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
int head = 0, cur = 0;
for (int i = 0; i < n; i++) {
head = (i == 0) ? 1 : head + i;
System.out.print(head);
cur = head;
for (int j = 1; j < n - i; j++) {
cur = cur + j + 1 + i;
System.out.print(" " + cur);
}
System.out.println(" ");
}
}
}
}
也可存入数组,开辟数组的时间(49ms 11664K)竟然比上述方法的运行时间更短(85ms 14260K) = = 我不理解
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
int[][] nums = new int[n][];
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
nums[i] = new int[n - i];
nums[i][0] = (i == 0) ? 1 : nums[i - 1][0] + i;
sb.append(nums[i][0]);
for (int j = 1; j < n - i; j++) {
nums[i][j] = nums[i][j - 1] + j + 1 + i;
sb.append(" ").append(nums[i][j]);
}
sb.append("\n");
}
System.out.print(sb);
}
}
}