杨辉三角形

简介: 杨辉三角形
Description:打印杨辉三角形。
Input:输入数据含有不多于50个的正整数n(n≤10)。
Output:三角形的每个项占3个字符宽。每个三角形之间空一行,最后的三角形之后没有空行。见样本输出。

#include <iostream>
#include <vector>
using namespace std;
inline void printPascalTriangle(int n) {//创建打印杨辉三角函数,内联函数更加省时间
    vector<vector<int>> triangle(n);
    for (int i = 0; i < n; ++i) {
        triangle[i].resize(i + 1);
        triangle[i][0] = triangle[i][i] = 1;
        for (int j = 1; j < i; ++j) {
            triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }//按照杨辉三角规律进行循环
    }
    for (const auto& row : triangle) {
        for (int num : row) {
            cout.width(3);
            cout << num;
        }//注意题干要求输出格式
        cout << endl;
    }
}
int main() {
    int n;
    while (cin >> n)
    {
        printPascalTriangle(n); //调用函数
        cout << endl;
    }
    return 0;
}

输出结果为

修改代码后的结果:

#include <iostream>
#include<iomanip>
using namespace std;
int main() {
    int n;
   while(cin >> n) { 
   int arr[10][10] = {0};
    for (int i = 0; i < n; i++) {
        arr[i][0] = 1;
        arr[i][i] = 1;
        for (int j = 1; j < i; j++) {
            arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for(int j=n-1-i;j>=0;j--)
        cout << ' ';
        for (int k = 0; k <= i; k++) {
            cout << setw(3) << arr[i][k];
        }
        cout << endl;
    }
}
    return 0;
   }

输出后结果如下:

输出不了题目中的要求格式,求助大佬应该如何加入空格的循环。

再一次对空格的改进:

#include <iostream>
using namespace std;
int main()
{
    int n;
    int data[50][50];
    int i = 0;
    int j = 0;
    while (cin >> n)
    {
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                data[i][j] = 1;
            }
        }
        for (i = 1; i < n; i++)
        {
            for (j = 1; j < i; j++)
            {
                data[i][j] = data[i - 1][j] + data[i - 1][j - 1];
            }
        }
        for (i = 0; i < n; i++)
        {
            for (int k = 0; k < 2 * (n - 1) - (3 * i / 2)-n/2; k++)
            {
                cout << " ";
            }
            for (j = 0; j <= i; j++)
            {
                printf("%3d", data[i][j]);
            }
            cout << endl;
        }
    }
    return 0;
}

越来越像了,但还是不对

目录
相关文章
|
5月前
|
人工智能
杨辉三角形
【6月更文挑战第30天】杨辉三角形。
55 3
|
2月前
|
索引
08_杨辉三角
08_杨辉三角
|
6月前
|
人工智能 Java C++
分解质因数
分解质因数
52 1
|
6月前
|
C++
杨辉三角(C++)
杨辉三角(C++)
75 1
|
6月前
|
人工智能 Java C++
数字三角形
数字三角形
38 0
|
6月前
|
C++ 索引
杨辉三角 II(C++)
杨辉三角 II(C++)
39 0
|
11月前
分解质因数答疑
为什么n % i == 0就是质数 因为在枚举到i之前已经把n中2到i-1的质因子除干净了,此时n中不含2到i-1的质因子,由于n为i的倍数,所以i中也不包含2到i-1的质因子。如果i可以整除前面的i - 1中的数那么i = x * (i - 1),n = x2 * (x * (i - 1)); 矛盾了 为什么只需要枚举到根号N
86 2
|
11月前
|
人工智能
杨辉三角形粗解
杨辉三角形粗解
46 0