二〇二三 四月十七日

https://www.luogu.com.cn/training/103#problems

【P5732】杨辉三角

题目描述

给出 n (n <=20),输出杨辉三角的前 n 行。

如果你不知道什么是杨辉三角,可以观察样例找找规律

样例输入

1
6

样例输出

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
4

样例输出

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");
}
}
}


二〇二三 四月十七日
http://example.com/2023/04/16/2023.4.17/
作者
oyxb_HT
发布于
2023年4月16日
更新于
2023年6月15日
许可协议