C++实现打印杨辉三角形(分别用固定大小数组和vector容器构造二维数组来实现)2021-07-21

C++实现打印杨辉三角形

1.用固定大小数组来实现

首先应该想到的是要使用二维数组来实现

#include<iostream>
#include<iomanip>
using namespace std;
const int n = 5;//以五行示例,如想改变行数只需改变n的值
int main()
{
	int a[n][n];
	int i, j;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j <= i; j++)
		{
			if (j == 0 || j == i)//如果是最左别或者最右边的元素就等于1
			{
				a[i][j] = 1;
			}
			else//如果是中间元素就等于上一行的左边一个元素+对应上一行元素
			{
				a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
			}
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << setw(n - i + 1);//输出域宽,setw()函数参数值是域宽
		for (j = 0; j <= i; j++)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;//没输出一行就换行
	}
	return 0;
}

运行结果
在这里插入图片描述

2.用vector容器构造二维数组来实现

resize()函数可以重新指定vector容器的大小

#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
const int n = 5;
int main()
{
	vector<vector<int> >result(n);
	for (int i = 0; i < n; i++)
	{
		result[i].resize(i+1);//所构造的二维数组的每一行都是不一样的长度,根据杨辉三角形的每一行不同列数来构造
	}
	for (int i = 0; i < result.size(); i++)
	{
		for (int j = 0; j <=i; j++)
		{
			if (j == 0 || j == i)//如果是最左别或者最右边的元素就等于1
			{
				result[i][j] = 1;
			}
			else//如果是中间元素就等于上一行的左边一个元素+对应上一行元素
			{
				result[i][j] = result[i - 1][j - 1] + result[i - 1][j];
			}
		}
	}
	for (int i = 0; i < result.size(); i++)//注意这里的i的条件是vector的大小
	{
		cout << setw(n - i+1);//输出域宽,n代表行数,i代表每一行
		for (int j = 0; j < i+1; j++)
		{
			cout << result[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

运行结果同上


版权声明:本文为qq_55227591原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。