广东网站设计公司电话,爱站seo查询软件,软件网站开发甘肃,中国国家培训网题目描述
Time Limit: 1000 ms Memory Limit: 256 mb
输入n值#xff0c;使用递归函数#xff0c;求杨辉三角形中各个位置上的值。
输入描述:
一个大于等于2的整型数n
输出描述:
题目可能有多组不同的测试数据#xff0c;对于每组输入数据#xff0c;
按题目的要求输…题目描述
Time Limit: 1000 ms Memory Limit: 256 mb
输入n值使用递归函数求杨辉三角形中各个位置上的值。
输入描述:
一个大于等于2的整型数n
输出描述:
题目可能有多组不同的测试数据对于每组输入数据
按题目的要求输出相应输入n的杨辉三角形。
示例
输入
6
输出
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
思路
杨辉三角第一行和第二行的内容很明显从第三行开始就很有规律了每一行的第一个和最后一个元素都是1从第二个到倒数第二个元素都是上一行的两个相邻元素的和。这里可以简单的分为奇数行和偶数行只需要用两个一维数组就可以保存相邻的两行元素不断迭代更新它们的内容并及时输出。虽然用一个二维数组来保存每一行的数值会简单许多但是题目输入的是一个大于等于2的整数n当n很大时如果用一个二维数组来保存每一行的数值会占用较大的空间。
注意根据题目的示例输出这里并不需要输出杨辉三角第一行的数值1。
源代码
#includeiostream
#includevector
using namespace std;//习题8.1 杨辉三角形
int main()
{int n;vectorint nums1 { 1 };vectorint nums2 { 1,1 };while (cin n) {for (int i 2; i n; i) {if (i % 2 1) { //奇数行nums1.resize(1);for (int j 1; j i - 1; j) {nums1.push_back(nums2[j - 1] nums2[j]);}nums1.push_back(1);for (auto it : nums1) {cout it ;}cout endl;}else { //偶数行nums2.resize(1);for (int j 1; j i - 1; j) {nums2.push_back(nums1[j - 1] nums1[j]);}nums2.push_back(1);for (auto it : nums2) {cout it ;}cout endl;}}}return 0;
}
提交结果