(杨辉三角)
①最简单的方法(推荐)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int L = 0;
printf("请输入你要打印的行数:");
scanf("%d", &L);
printf("\n");
int arr[100][100] = { 0 };
for (int i = 0; i <= L; i++)
{
for (int j = 0; j <= i; j++)
{
arr[i][0] = arr[i][i] = 1; //首末元素赋值为1
}
for (int j = 1; j <= i; j++)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; //中间元素赋值为上一行相邻的两项之和
}
for (int j = 0; j <= i; j++)
{
printf("%-3d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
②Show函数显示(复杂)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Yangtriangle(int arr[][10], int row, int col)
{
int i = 0; int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j <= i; j++)
{
if (j == 0 || i == j)
{
arr[i][j] = 1; //首末元素赋值为1
}
else
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
}
void Show(int arr[][10], int row, int col)
{
int i = 0; int j = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j <= i; j++)
{
printf("%-5d", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[10][10] = { 0 };
Yangtriangle(arr, 10, 10);
Show(arr, 10, 10);
return 0;
}
③使用泛型(进阶)
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<>();
if (numRows == 0)
return ret;
}
ret.add(new ArrayList<>());
ret.get(0).add(1); //第一行只有一个元素1
for (int i = 1; i < numRows; i++) { //行数为i
List<Integer> list = new ArrayList<>();
//每一行第一个元素是1
list.add(1);
//保存上一行的元素
List<Integer> prevList = ret.get(i - 1);
for (int j = 1; j < i; j++) { //列数为j
int num = prevList.get(j - 1) + prevList.get(j);
list.add(num);
}
//每一行最后一个元素是1
list.add(1);
//把每一行元素都放进整个三角形中
ret.add(list);
}
return ret;
}
public static void main(String[] args) {
List<List<Integer>> list = generate(5);
System.out.println(list);
}
打印结果为: