面试的时候总会遇到手写杨辉三角算法,当时是一脸懵逼,过了那么长时间,终于下定决心好好研究研究.
1.首先使用c++:
// 杨辉三角
void YangHuifunction(){
// 1. 初始化,都赋值为0
int arr[10][10];
for (int x = 0; x<10; x++) {
for (int y = 0; y< x; y++) {
arr[x][y] = 0;
}
}
// 2.设置每一行的第一列和最后一列都是 1
for (int i = 0;i<=10 ;i++) {
arr[i][0] = 1;
arr[i][i] = 1;
}
// 3.赋值
for (int i = 2; i<10; i++) {
for (int j = 1; j< i; j++) {
// 等于上一行的第j-1列和第j列的和
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
// 4.打印结果
for (int x = 0; x<10; x++) {
for (int y = 0; y<= x; y++) {
cout<<arr[x][y]<< " " ;
}
cout<<endl;
}
}
2.swift语言:
func YangHuiFunction(){
// 1.初始化
let n = 10
// 根据行数初始化一个二维数组
var arr = [[Int]](repeating: [], count: n)
// 根据每一行个数初始化每一行
for i in 0..<arr.count
{
arr[i] += [Int](repeating: 0, count: i + 1)
}
// 2.赋值
for i in 0..<arr.count
{
for j in 0..<arr[i].count
{
if j == 0 || j == i
{
arr[i][j] = 1
}
else {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
}
}
}
// 3.打印
for i in 0..<arr.count {
// 当前行开始打印前,打印一定的空格
for _ in 0..<arr.count - 1 - i {
print(" ", terminator: "") }
// 打印当前行的数字
for j in arr[i] {
print(j, terminator: " ")
}
// 换行
print("")
}
}