曲棍球棒的起始行号和长度将作为输入。我们需要打印曲棍球棒的元素,不包括总和。
以下代码打印10行的pascal三角形(行:0到行:9)。如何添加代码来获取曲棍球棒的元素?
#include<iostream>
using namespace std;
int main()
{
int l, r, arr[10][10];
for (int i=0; i<=9; i++)
{
for(int j=0; j<=i; j++)
{
if((i==j)||(j==0))
{
arr[i][j] = 1;
cout << arr[i][j] << " ";
}
else
{
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
cout << arr[i][j] << " ";
}
}
cout << endl;
}
return 0;
}
它给出如下输出,
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
现在我们需要采取曲棍球杆的起始行和长度, 让我们来 从第3行开始 长度为4
1
1 1
1 2 1
**1** 3 3 1
1 **4** 6 4 1
1 5 **10** 10 5 1
1 6 15 **20** 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
播种曲棍球棒形成就好了,
1 + 4 + 10 + 20 = 35
我们需要打印最终输出,如下所示
1+4+10+20
注意:无需打印sum元素-35
================================= 我添加了以下代码,
cout <<"enter starting row-\n";
cin >> r;
cout << "enter length of hockey stick-\n";
cin >> l;
cout << "\nelements of hockey stick-\n";
int j=0;
for (int i=r; i<=(r+l-1); i++)
{
int j = i-r;
cout << arr[i][j] << " ";
}
cout << endl;
输出为 -
enter starting row-
3
enter length of hockey stick
4
elements of hockey stick-
1 4 10 20
但我需要它如下。
1+4+10+20
答案 0 :(得分:1)
HolyBlackCat的暗示一般都是正确的......
...除了最后一个元素也会以+
为后缀。
这就是为什么我建议将它转过来:为除+
之外的每个元素添加前缀。这是通过一个空的初始分隔符串来实现的。它在循环结束时被覆盖:
const char *sep = "";
//int j=0; // unused
for (int i=r; i<=(r+l-1); i++)
{
int j = i-r;
cout << sep << arr[i][j];
sep = " + ";
}
cout << endl;
注意:
循环中sep
的赋值可能不需要第一次迭代。 AFAIK,这通常比额外if
测试便宜。