C ++:如何产生帕斯卡三角形的第'n'行? [关闭]

Posted

技术标签:

【中文标题】C ++:如何产生帕斯卡三角形的第\'n\'行? [关闭]【英文标题】:C++: How do I produce the 'nth' line of Pascal's Triangle? [closed]C ++:如何产生帕斯卡三角形的第'n'行? [关闭] 【发布时间】:2014-11-27 11:59:06 【问题描述】:

这是我的代码:

#include <iostream>
using namespace std;

int main()

    int n,k,i,x;
    cout << "Enter a row number for Pascal's Triangle: ";
    cin >> n; 
    for(i=0;i<=n;i++)
    
        x=1;
        for(k=0;k<=i;k++)
        
            cout << x << '\t';
            x = x * (i - k) / (k + 1);
        
    cout << endl;
    
    return 0;

如何更改它以使其仅显示第 n 行而不是整个三角形? TIA。

【问题讨论】:

使用二项式系数计算 你刚刚从here复制了别人的代码。在不试图理解它的情况下,您希望人们为您修改它以适应您的家庭作业。如果您确实尝试理解它,您会发现更改是微不足道的。 @interjay:这听起来很糟糕,但我想你是对的。这真的是微不足道的......用户,真为你感到羞耻! :) 【参考方案1】:

只需去掉外循环:

int main()

    cout << "Enter a row number for Pascal's Triangle: ";
    cin >> n; 
    int x = 1;
    for (int k = 0; k <= n; k++)
    
        cout << x << '\t';
        x = x * (n - k) / (k + 1);
    
    cout << endl;
    return 0;

【讨论】:

完美运行。谢谢!【参考方案2】:

cout &lt;&lt; x &lt;&lt; '\t'; 更改为

if(i == n) cout << x << '\t';  // Print only last line (i = n)

还有cout &lt;&lt; endl;

if(i == n) cout << endl;  // Print after only last line (i = n)

【讨论】:

【参考方案3】:

以下是生成帕斯卡三角形的nth 行的有效方法。

以 1 开始行,因为有 1 种方法可以选择 0 个元素。

对于下一项,乘以 n 除以 1。这是因为有 n 方法可以选择 1 个项目。

对于下一个学期,乘以n-1并除以2。有n*(n-1)的方法可以选择2个项目,以及2种排序方式。

下一个学期,乘以n-2除以3。有n*(n-1)*(n-2)的方式选择3个项目,以及2*3的排序方式。

等等。

一旦乘以 1 除以 n,我们就会停止。

#include <iostream>
using namespace std;

int main() 
  int n;
  cout << "Enter a row number for Pascal's Triangle: ";
  cin >> n; 
  int x = 1;
  cout << x;
  for (int a = n, b = 1; b <= n; --a, ++b) 
    x = x * a / b;
    cout << ' ' << x;
   
  cout << '\n';
  return 0;

【讨论】:

【参考方案4】:

你需要输入第n行的值

int i =nth Line;
for(k=0;k<=i;k++)

    count<<fact(i)/(fact(k)*fact(i-k))<<"\t";



int fact(int a)

    int j=1;
    for(int i=a;i>1;i--)
    
        j*=a;
        a--;
    
    return j;

i 的值从 0 开始 对于i=6

输出将是 1 6 15 20 15 6 1

【讨论】:

这可行,但由于双循环,效率比可能低一个数量级。

以上是关于C ++:如何产生帕斯卡三角形的第'n'行? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

杨辉三角的第n行第n个数的求法(公式)

Shell如何实现从文件中的第n行开始读取记录?

c语言如何输出星号三角形*****

Pascal三角形变化的问题

c++输出三角形

c语言 如何输出以下图形