https://www.luogu.com.cn/training/103#problems
【P5732】杨辉三角
题目描述
给出 n (n <=20),输出杨辉三角的前 n 行。
如果你不知道什么是杨辉三角,可以观察样例找找规律
样例输入
样例输出
1 2 3 4 5 6
| 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
|
杨辉三角中的数等于它正上方的数和左上角数的和,可以写出一个通项公式:**num[i][j] = num[i - 1][j] + num[i - 1][j - 1]**。声明一个二维数组照着公式递推。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int[][] num = new int[n + 1][n + 1];
for(int i = 1; i < n + 1; i++) { num[i][1] = 1; num[i][i] = 1; }
for(int i = 1; i < n + 1; i++) { for(int j = 2; j < i; j++) { num[i][j] = num[i - 1][j] + num[i - 1][j - 1]; } }
for(int i = 1; i < n + 1; i++) { for(int j = 1; j < i + 1; j++) { System.out.print(num[i][j] + " "); } System.out.println(" "); } } }
|
【P5731】蛇形方阵
题目描述
给出一个不大于 9 的正整数 n,输出 n * n
的蛇形方阵。
从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。
输入格式
输入一个正整数 n,含义如题所述。
输出格式
输出符合题目要求的蛇形矩阵。
样例输入
样例输出
1 2 3 4
| 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
|
提示
数据保证,1 <= n <= 9。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int[][] num = new int[n + 1][n + 1]; int k = 1; int x = 1,y = 0; while(k <= n * n) { while(y < n && num[x][y + 1] == 0) num[x][++y] = k++; while(x < n && num[x + 1][y] == 0) num[++x][y] = k++; while(y > 1 && num[x][y - 1] == 0) num[x][--y] = k++; while(x > 1 && num[x - 1][y] == 0) num[--x][y] = k++; }
for(int i = 1; i < n + 1; i++) { for(int j = 1; j < n + 1; j++) { System.out.printf("%3d ",num[i][j]); } System.out.println(" "); } } }
|
这题数据范围这么小,你其实可以:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); if(n == 1) System.out.println(" 1"); if(n == 2) { System.out.println(" 1 2"); System.out.println(" 4 3"); }
if(n == 3) { System.out.println(" 1 2 3"); System.out.println(" 8 9 4"); System.out.println(" 7 6 5"); }
if(n == 4) { System.out.println(" 1 2 3 4"); System.out.println(" 12 13 14 5"); System.out.println(" 11 15 16 6"); System.out.println(" 10 9 8 7"); }
if(n == 5) { System.out.println(" 1 2 3 4 5"); System.out.println(" 16 17 18 19 6"); System.out.println(" 15 24 25 20 7"); System.out.println(" 14 23 22 21 8"); System.out.println(" 13 12 11 10 9" ); }
if(n == 6) { System.out.println(" 1 2 3 4 5 6"); System.out.println(" 20 21 22 23 24 7"); System.out.println(" 19 32 33 34 25 8"); System.out.println(" 18 31 36 35 26 9"); System.out.println(" 17 30 29 28 27 10"); System.out.println(" 16 15 14 13 12 11"); }
if(n == 7) { System.out.println(" 1 2 3 4 5 6 7"); System.out.println(" 24 25 26 27 28 29 8"); System.out.println(" 23 40 41 42 43 30 9"); System.out.println(" 22 39 48 49 44 31 10"); System.out.println(" 21 38 47 46 45 32 11"); System.out.println(" 20 37 36 35 34 33 12"); System.out.println(" 19 18 17 16 15 14 13"); }
if(n == 8) { System.out.println(" 1 2 3 4 5 6 7 8"); System.out.println(" 28 29 30 31 32 33 34 9"); System.out.println(" 27 48 49 50 51 52 35 10"); System.out.println(" 26 47 60 61 62 53 36 11"); System.out.println(" 25 46 59 64 63 54 37 12"); System.out.println(" 24 45 58 57 56 55 38 13"); System.out.println(" 23 44 43 42 41 40 39 14"); System.out.println(" 22 21 20 19 18 17 16 15"); }
if(n == 9) { System.out.println(" 1 2 3 4 5 6 7 8 9"); System.out.println(" 32 33 34 35 36 37 38 39 10"); System.out.println(" 31 56 57 58 59 60 61 40 11"); System.out.println(" 30 55 72 73 74 75 62 41 12"); System.out.println(" 29 54 71 80 81 76 63 42 13"); System.out.println(" 28 53 70 79 78 77 64 43 14"); System.out.println(" 27 52 69 68 67 66 65 44 15"); System.out.println(" 26 51 50 49 48 47 46 45 16"); System.out.println(" 25 24 23 22 21 20 19 18 17"); } } }
|